jetbrick-mvc 七牛图片服务器插件 QiniuPlugin

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.qiniu.util.Auth;

public class QiniuConfig {
	final Logger logger = LoggerFactory.getLogger(QiniuConfig.class);

	private String ak;
	private String sk;
	private String domail;
	private String style;
	private String bucket;

	public QiniuConfig(String propertiesFile) {
		Properties properties = new Properties();
		InputStream is = QiniuConfig.class.getClassLoader().getResourceAsStream(propertiesFile);
		try {
			properties.load(is);
		} catch (IOException e) {
			logger.error("QiniuConfig", e);
		}
		ak = properties.getProperty("ak");
		sk = properties.getProperty("sk");
		domail = properties.getProperty("domail");
		style = properties.getProperty("style");
		bucket = properties.getProperty("bucket");
	}

	public String getAk() {
		return ak;
	}

	public void setAk(String ak) {
		this.ak = ak;
	}

	public String getSk() {
		return sk;
	}

	public void setSk(String sk) {
		this.sk = sk;
	}

	public String getDomail() {
		return domail;
	}

	public void setDomail(String domail) {
		this.domail = domail;
	}

	public String getStyle() {
		return style;
	}

	public void setStyle(String style) {
		this.style = style;
	}

	public String getBucket() {
		return bucket;
	}

	public void setBucket(String bucket) {
		this.bucket = bucket;
	}
	// bucket 空间名
	// key key,可为 null
	// expires 有效时长,单位秒。默认3600s
	// policy 上传策略的其它参数,如 new
	// StringMap().put("endUser","uid").putNotEmpty("returnBody", "")。scope通过
	// bucket、key间接设置,deadline 通过
	// expires 间接设置
	// strict 是否去除非限定的策略字段,默认true
	// 生成的上传token
	// 简单上传,使用默认策略
	public String getToken(String bucketName) {
		Auth auth = Auth.create(ak, sk);
		try {
			return auth.uploadToken(bucketName);
		} catch (Exception e) {
			logger.debug("策略获取失败");
			e.printStackTrace();
		}
		return null;
	}
	// 覆盖上传
	public String getUpTokenCover(String bucketName, String key) {
		Auth auth = Auth.create(ak, sk);
		return auth.uploadToken(bucketName, key);
	}
import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;

public class QiniuKit {
	static final Logger logger = LoggerFactory.getLogger(QiniuKit.class);
	static QiniuConfig mConfig;
	static void init(QiniuConfig config) {
		mConfig = config;
	}
	static UploadManager uploadManager = new UploadManager();
	// 上传内存中数据
	public static String upload(byte[] data, String key) {
		String path = "";
		try {
			Auth auth = Auth.create(mConfig.getAk(), mConfig.getSk());
			Response res = uploadManager.put(data, key, auth.uploadToken(mConfig.getBucket()));
			if (res.isOK()) {
				path = mConfig.getDomail().concat("/").concat(key);
				return path;
			} else {
				return path;
			}
		} catch (QiniuException e) {
			Response r = e.response;
			// 请求失败时简单状态信息
			logger.error(r.toString());
			try {
				// 响应的文本信息
				logger.error(r.bodyString());
			} catch (QiniuException e1) {
				// ignore
			}
			return path;
		}
	}

	/**
	 * @Title: upload
	 * @author leizhen.wang
	 * @Description: TODO(上传文件)
	 * @param filePath
	 *            文件地址
	 * @param key
	 *            文件名称
	 * @param 设定文件
	 * @return String 返回类型
	 * @throws
	 */
	public static String upload(String filePath, String key) {
		String path = "";
		try {
			Auth auth = Auth.create(mConfig.getAk(), mConfig.getSk());
			Response res = uploadManager.put(filePath, key, auth.uploadToken(mConfig.getBucket()));
			if (res.isOK()) {
				// success
				path = mConfig.getDomail().concat("/").concat(key);
				return path;
			} else {
				return path;
			}
		} catch (QiniuException e) {
			Response r = e.response;
			// 请求失败时简单状态信息
			logger.error(r.toString());
			try {
				// 响应的文本信息
				logger.error(r.bodyString());
			} catch (QiniuException e1) {
				// ignore
			}
			return path;
		}
	}
	/**
	 * @Title: upload
	 * @author leizhen.wang
	 * @Description: TODO(上传文件)
	 * @param File
	 *            file 对象
	 * @param key
	 *            文件名称
	 * @param 设定文件
	 * @return String 返回类型
	 * @throws
	 */
	public static String upload(File file, String key) {
		String path = "";
		try {
			Auth auth = Auth.create(mConfig.getAk(), mConfig.getSk());
			Response res = uploadManager.put(file, key, auth.uploadToken(mConfig.getBucket()));
			if (res.isOK()) {
				path = mConfig.getDomail().concat("/").concat(key);
				return path;
			} else {
				return path;
			}
		} catch (QiniuException e) {
			Response r = e.response;
			// 请求失败时简单状态信息
			logger.error(r.toString());
			try {
				// 响应的文本信息
				logger.error(r.bodyString());
			} catch (QiniuException e1) {
				e1.printStackTrace();
			}
			return path;
		}
	}
import jetbrick.web.mvc.plugin.Plugin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class QiniuPlugin implements Plugin {
	final Logger log = LoggerFactory.getLogger(QiniuPlugin.class);
	private String propFile = "config/qiniu.properties";

	public QiniuPlugin() {
	}
	public QiniuPlugin(String propFile) {
		this.propFile = propFile;
	}
	@Override
	public void destory() {

	}

	@Override
	public void initialize() {
		log.info("------------------开始启动qiniu插件--------------------");
		QiniuKit.init(new QiniuConfig(propFile));
		log.info("------------------启动完毕qiniu插件--------------------");
	}

jar :okhttp-2.4.0.jar,okio-1.5.0.jar,qiniu-java-sdk-7.0.4.jar

时间: 2024-11-09 21:38:57

jetbrick-mvc 七牛图片服务器插件 QiniuPlugin的相关文章

话说android端七牛图片上传

七牛图片上传业务流程如下图(这是官方的图): 由上图可知,要想实现图片上传,是要三端进行交互的(我刚刚开始以为只要七牛服务器跟客户端交互就行) 接下来步骤如下: 1.首先肯定是要有一个七牛的账号,并创建一个空间 2.客户端向业务服务器(也就是客户端的应用服务器)发请求你要上传多上张图片 3.业务服务器根据客户端的请求向七牛云存储生成token(应用的服务器下载好相应的七牛sdk然后根据接口文档所述向七牛服务器请求token,token相当于一把钥匙,具体代码我也不知道怎么实现,毕竟我不是写后台的

ASP.NET Core 简单实现七牛图片上传(FormData 和 Base64)

七牛图片上传 SDK(.NET 版本):https://developer.qiniu.com/kodo/sdk/1237/csharp UpoladService示例代码: public class UpoladService : IUpoladService {     private readonly static string[] _imageExtensions = new string[] { ".jpg", ".png", ".gif&quo

七牛图片云存储 配置及示例

一.七牛自定义配置节点 <configSections> <section name ="QiniuConfig" type="Amy.Toolkit.QiniuStorage.SectionHandler"/> </configSections> <QiniuConfig> <add key="AccessKey" value="自己的accesskey"><

laravel上传到七牛图片插件

1.首先引入两个插件 2.在https://developer.qiniu.com/kodo/sdk/1241/php找到安装命令 在终端运行composer require qiniu/php-sdk 3.自定义一个全局辅助函数,首先在项目的Http文件夹中新建Helpers文件夹,里面新建一个文件,名字就叫qiniu.php,注意引入 // 引入鉴权类use Qiniu\Auth;// 引入上传类use Qiniu\Storage\UploadManager; 在composer.json里

导出七牛图片

原来图片都是在本地,往外导图片特别简单,只要执行一下cp的脚本就好了,但是现在图片都迁移到了七牛上,再往外导出图片就麻烦了 在七牛有一个qshell工具 里边有一个qdownload qdownload 从七牛空间同步数据到本地,支持只同步某些前缀的文件,支持增量同步 用的话呢qshell qdownload qdownload.conf  是这么用qdownload.conf 为配置文件 里边有这样一个配置 ,其他配置没有给出. "prefix"    :   ""

加速七牛图片访问的处理方案

Qiniu 七牛问题解答 有的用户对七牛的使用图片加载要求比较高,可以考虑以下的加载方案.七牛云存储可以在不改变图片质量的条件下,实现文件下载的压缩,所以使用起来更加便宜和实惠.通过一站式托管.存储+cdn访问.访问起来更快.但是还可以更快.我给大家提供几个解决方案. 问题解决方案 1,使用七牛的缩略图功能 普通图片处理接口 高级图片处理接口 2,像百度一类的网站就是多个域名访问同一页面的不同图片 因为图片访问,在浏览器中对一个域名最多请求三张图片.所以建议使用多个域名访问图片.在七牛这里你可以

yii2上传七牛图片(超详细)

其实不止是yii框架可以用, 因为只是一个类库使用,在哪个框架都可以用 前期准备 1.在七牛注册账号https://portal.qiniu.com/signup/choice 2.创建空间https://portal.qiniu.com/bucket(记住存储空间名称和存储区域) 3.创建秘钥https://portal.qiniu.com/user/key   第一步: 在composer.json里面的require属性里面加"crazyfd/yii2-qiniu": "

七牛跨服务器上传文件带参数

HttpPostedFileBase file = Request.Files["file"]; //System.IO.Stream s = file.InputStream; byte[] buffer = new byte[1024]; //int bytesRead = 0; //while ((bytesRead = file.InputStream.Read(buffer, 0, buffer.Length)) != 0) //{ //} buffer=StreamToBy

java开发:分享一下百度ueditor和七牛的图片集成上传

做网站时,如果上传的图片量很大,现在不少人会选用七牛图片服务器.那么,今天就来说说如何把网站的图片上传与七牛的sdk集成的问题. jsp页面,实现图片上传的方式也很多,今天就来说下百度的编辑器:ueditor 首先要到官网去下载它,后面我也会附上源代码,需要的朋友可以下载. 我们新建一个项目:qndemo,然后将ueditor放到webroot目录下,截图如下: 另外,我们还要引入jar包: 前台页面,我们需要引用相关js,默认配置下,会加载出编辑效果,如下图: 这时候,我们上传的图片会保存在本