package com.kingschan.blog.common.qiniu; import javax.annotation.PostConstruct; import com.qiniu.common.Zone; import com.qiniu.storage.Configuration; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import com.qiniu.common.QiniuException; import com.qiniu.http.Response; import com.qiniu.storage.BucketManager; import com.qiniu.storage.UploadManager; import com.qiniu.util.Auth; /** * 七牛管理 * * @author kings.chan */ @Component public class QiNiuManagement { //设置好账号的ACCESS_KEY和SECRET_KEY @Value("${qiniu.access.key}") private String ACCESS_KEY; @Value("${qiniu.secret.key}") private String SECRET_KEY; //要上传的空间 @Value("${qiniu.bucketname}") private String bucketname; private Auth auth; @PostConstruct private void inital() { //密钥配置 auth = Auth.create(ACCESS_KEY, SECRET_KEY); } ///////////////////////指定上传的Zone的信息////////////////// //第一种方式: 指定具体的要上传的zone //注:该具体指定的方式和以下自动识别的方式选择其一即可 //要上传的空间(bucket)的存储区域为华东时 // Zone z = Zone.zone0(); //要上传的空间(bucket)的存储区域为华北时 // Zone z = Zone.zone1(); //要上传的空间(bucket)的存储区域为华南时 // Zone z = Zone.zone2(); //第二种方式: 自动识别要上传的空间(bucket)的存储区域是华东、华北、华南。 Zone z = Zone.autoZone(); Configuration c = new Configuration(z); //创建上传对象 UploadManager uploadManager = new UploadManager(c); //简单上传,使用默认策略,只需要设置上传的空间名就可以了 public String getUpToken() { return auth.uploadToken(bucketname); } /** * 覆盖上传 * * @return */ public String getRepliceUpToken(String key) { //<bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。 //如果希望只能上传指定key的文件,并且不允许修改,那么可以将下面的 insertOnly 属性值设为 1。 //第三个参数是token的过期时间 return auth.uploadToken(bucketname, key); } /** * 上传文件 * * @param filepath * @param key 传null就自动生成 * @return * @throws Exception */ public JSONObject upload(String filepath, String key) throws Exception { //调用put方法上传 Response res = uploadManager.put(filepath, key, null == key ? getUpToken() : getRepliceUpToken(key)); return JSONObject.fromObject(res.bodyString()); } /** * 删除资源 * * @param key * @throws Exception */ public void delRes(String key) throws QiniuException { //实例化一个BucketManager对象 BucketManager bucketManager = new BucketManager(auth,c); //调用delete方法移动文件 bucketManager.delete(bucketname, key); } }