springmvc整合七牛雲存儲實現文件上傳(java篇)

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章