springmvc整合七牛雲存儲實現文件上傳(java篇)
在springmvc上傳文件到本地的基礎上,整合七牛雲存儲,實現簡單的上傳功能。
首先maven配置依賴
<!--七牛依賴-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>sdk</artifactId>
<version>6.1.7</version>
</dependency>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.3.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>happy-dns-java</artifactId>
<version>0.1.4</version>
<scope>compile</scope>
</dependency>
直接貼代碼:
文件上傳到本地後,然後上傳到七牛雲,成功上傳後刪除本地文件。
/**
* java-sdk 上傳到七牛
*/
@RequestMapping("/qiniu/java/upload")
public String javaUpload() {
return "qiniujavaupload";
}
@RequestMapping("/qiniu/java/upload/up")
@ResponseBody
public Map<String,String> qiniuUpload(
MultipartFile file, HttpServletRequest request
){
//設置好賬號的ACCESS_KEY和SECRET_KEY
String ACCESS_KEY = "kT93RyyRfkVBgned_N-xLjAlB3kobwGyt2aykgx2";
String SECRET_KEY = "MVOQB-Nz2q55UA7p6H_MSJ3XkJrGrPyv_oSnbJtX";
//要上傳的空間
String bucketname = "notebook";
//上傳到七牛後保存的文件名
String key;
//上傳文件的路徑
String FilePath;
//密鑰配置
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
//自動識別要上傳的空間的初村區域是華東、華北、華南
Zone z = Zone.autoZone();
com.qiniu.storage.Configuration c = new com.qiniu.storage.Configuration(z);
//創建上傳對象
UploadManager uploadManager = new UploadManager(c);
//外鏈域名
String domian = "http://ov1a6etyz.bkt.clouddn.com/";
//獲取upToken
String upToken = auth.uploadToken(bucketname);
//開始時間
long startTime=System.currentTimeMillis();
String timeString = String.valueOf(startTime);
logger.info("______________開始時間:={}",startTime);
Map<String ,String> map = new HashMap<String, String>();
logger.info("______________文件名:={}",file.getOriginalFilename());
//獲取當前路徑
String uploadPath = request.getServletContext().getRealPath("WEB-INF/classes/upload");
logger.info("______________路徑:={}",uploadPath);
if (!file.isEmpty()){
String fileName = timeString+file.getOriginalFilename();
try {
String path=uploadPath+"\\"+fileName;
file.transferTo(new File(path));
key = fileName;
FilePath = path;
//上傳到七牛
//調用put方法
try {
Response response = uploadManager.put(FilePath,key,upToken);
logger.info("___________________response={}",response.bodyString());
map.put("state","1");
map.put("info","上傳七牛成功");
map.put("fileName",fileName);
map.put("qiniuUrl",domian+"/"+fileName);
}catch (QiniuException e){
map.put("state","0");
map.put("info","上傳七牛失敗");
Response r = e.response;
logger.error("上傳七牛異常={}",r.toString());
}finally {
//上傳七牛完成後刪除本地文件
File deleteFile = new File(path,fileName);
if (deleteFile.exists()){
deleteFile.delete();
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
//結束時間
long endTime=System.currentTimeMillis();
logger.info("______________用時:={}",endTime-startTime+"ms");
return map;
}