java七牛雲文件上傳, 刪除


前言

七牛雲是國內領先的企業級公有雲服務商,致力於打造以數據為核心的場景化PaaS服務。圍繞富媒體場景,七牛先后推出了對象存儲,融合CDN加速,數據通用處理,內容反垃圾服務,以及直播雲服務等。

 

第一步:去七牛雲注冊賬號,然后去控制台創建存儲空間

 

 第二步:在七牛雲創建完空間后,給空間配置訪問域名

 

 

 

 添加完域名后點擊確定,此時域名添加成功並復制CNAME

 

 第三步:給域名添加記錄值,選擇CNAME類型,此時七牛雲空間就可以訪問了

 

然后再個人中心中復制需要的秘鑰

 

 

 

第四步:在Java項目的maven中添加兩個七牛jar包

 

 填寫工具類

import com.alibaba.fastjson.JSONObject;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.util.Auth;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.UUID;
@Service
public class Qiniu {
// 設置好賬號的ACCESS_KEY和SECRET_KEY
private String ACCESS_KEY = "####################";
private String SECRET_KEY = "####################";
// 要上傳的空間
String bucketname = "###";

// 密鑰配置
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
// 構造一個帶指定Zone對象的配置類,不同的七雲牛存儲區域調用不同的zone
Configuration cfg = new Configuration(Zone.zone0());
// ...其他參數參考類注釋
UploadManager uploadManager = new UploadManager(cfg);

// 測試域名,只有30天有效期
private static String QINIU_IMAGE_DOMAIN = "http://###############/";

// 簡單上傳,使用默認策略,只需要設置上傳的空間名就可以了
public String getUpToken() {
return auth.uploadToken(bucketname);
}

public String saveImage(MultipartFile file) throws IOException {
try {
int dotPos = file.getOriginalFilename().lastIndexOf(".");
if (dotPos < 0) {
return null;
}
String fileExt = file.getOriginalFilename().substring(dotPos + 1).toLowerCase();
// 判斷是否是合法的文件后綴
if (!isFileAllowed(fileExt)) {
return null;
}

String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileExt;
// 調用put方法上傳
Response res = uploadManager.put(file.getBytes(), fileName, getUpToken());
// 打印返回的信息
if (res.isOK() && res.isJson()) {
// 返回這張存儲照片的地址
return QINIU_IMAGE_DOMAIN + JSONObject.parseObject(res.bodyString()).get("key");
} else {
return null;
}
} catch (QiniuException e) {
// 請求失敗時打印的異常的信息
return null;
}
}
// 圖片允許的后綴擴展名
private static String[] IMAGE_FILE_EXTD = new String[] { "png", "bmp", "jpg", "jpeg","pdf" };

private static boolean isFileAllowed(String fileName) {
for (String ext : IMAGE_FILE_EXTD) {
if (ext.equals(fileName)) {
return true;
}
}
return false;
}

//刪除文件
public int deleteFileFromQiniu(String fileName){
//構造一個帶指定Zone對象的配置類
Configuration cfg = new Configuration(Zone.zone0());
String key = fileName;
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
BucketManager bucketManager = new BucketManager(auth, cfg);
try {
Response delete = bucketManager.delete(bucketname, key);
return delete.statusCode;
} catch (QiniuException ex) {
//如果遇到異常,說明刪除失敗
ex.printStackTrace();
System.err.println(ex.code());
System.err.println(ex.response.toString());
}
return -1;
}
}


/**
* 七牛雲上傳
* @param file
* @return
*/
@PostMapping("saveImage")
@ResponseBody
public Object saveImage(@RequestParam("file")MultipartFile file){

if (file.isEmpty()){
return "error";
}

try {
Map<String, Object> map2 = new HashMap<>();
Map<String, Object> map = new HashMap<>();
map.put("code", 0);
map.put("msg", "");
map2.put("src", qiniu.saveImage(file));
map.put("data", map2);
return map;
}catch (Exception e){
e.printStackTrace();
}
return"fail";
}

/**
* 七牛雲刪除
* @param fileName
* @return
*/
@PostMapping("deleteImage")
@ResponseBody
public int deleteImage(String fileName){
return qiniu.deleteFileFromQiniu(fileName);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM