項目中會用到大量的圖片和小視頻,爲了分擔服務器壓力,將文件都放在七牛雲。這裏的思路很簡單,就是移動端、pc端把文件上傳到服務器,服務器作一個臨時緩存,保存必要的信息到數據庫後,將文件上傳到七牛雲,最後刪除服務器的緩存。固然,也能夠直接讓移動端、pc端把文件上傳到七牛雲,七牛雲在返回信息給服務器,這種方法雖然更佳,可是敲起代碼來有點麻煩,複雜。
1).先去註冊一個七牛雲賬號,新建一個存儲空間,存儲空間必定要設置公開!
2).下載java的SDK,這裏以java-sdk-7.1.1爲例
3).在maven中引入jar包java
<!-- 七牛雲 -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.1.1</version>
</dependency>
4).編寫七牛雲工具類:QiniuUtil.javagit
package com.hsp.util;
import java.io.IOException;
import java.util.UUID;
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;
public class QiniuUtil {
//設置須要操做的帳號的AK和SK
private static final String ACCESS_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
private static final String SECRET_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
//要上傳的空間
private static final String bucketname = "xxxxxxxxxxxxxxxxxx";
//密鑰
private static final Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//普通上傳
public void upload(String filePath, String fileName) throws IOException{
//建立上傳對象
UploadManager uploadManager = new UploadManager();
try {
//調用put方法上傳
Response res = uploadManager.put(filePath, fileName, auth.uploadToken(bucketname));
//打印返回的信息
//System.out.println(res.bodyString());
} catch (QiniuException e) {
Response r = e.response;
// 請求失敗時打印的異常的信息
//System.out.println(r.toString());
try {
//響應的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
//ignore
}
}
}
//普通刪除
public void delete(String key) throws IOException {
//實例化一個BucketManager對象
BucketManager bucketManager = new BucketManager(auth);
//此處的33是去掉:http://ongsua0j7.bkt.clouddn.com/,剩下的key就是圖片在七牛雲的名稱
key = key.substring(33);
//System.out.println("key---------->" + key);
try {
//調用delete方法移動文件
bucketManager.delete(bucketname, key);
} catch (QiniuException e) {
//捕獲異常信息
Response r = e.response;
System.out.println(r.toString());
}
}
}
5).在controller中使用github
...
QiniuUtil qiniuUtil = new QiniuUtil();
try {
//上傳到七牛雲
qiniuUtil.upload(filePath, fileName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
...