springboot(7)——上傳圖片/檔案到七牛雲端儲存
阿新 • • 發佈:2018-11-01
一、七牛雲快速入門
- 1、註冊賬號
- 2、建立儲存空間, 命名
xyz
對應下面springboot
應用配置bucket
- 3、建立成功後進入該空間,獲取該空間的測試域名,對應下面
springboot
應用配置中的path
- 4、點選“個人面板—金鑰管理”,獲取
accessKey
和secretKey
二、application.yml中配置引數
# 七牛雲配置
# bucket是建立的儲存空間名
# path對應儲存空間的訪問域名
qiniu:
accessKey: zHy3Im3Yjxxxxxx
secretKey: LQR4mszxxxxxxxx
bucket: xyz
path: http://xxx.bkt.clouddn.com
三、讀取application.yml中七牛雲配置工具類ConstantQiniu.java
@Data
@Component
@ConfigurationProperties(prefix = "qiniu")
public class ConstantQiniu {
private String accessKey;
private String secretKey;
private String bucket;
private String path;
}
四、pom.xml
加入七牛雲
<dependency>
<groupId >com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0, 7.2.99]</version>
</dependency>
五、XyzController
控制類
@Controller
@RequestMapping("/admin/xyz")
public class XyzController{
@Autowired
private ConstantQiniu constantQiniu;
/**
* 上傳檔案到七牛雲端儲存
* @param multipartFile
* @return
* @throws IOException
*/
@PostMapping("/qiniu")
@ResponseBody
public ResultVO uploadImgQiniu(@RequestParam("file") MultipartFile multipartFile) throws IOException {
FileInputStream inputStream = (FileInputStream) multipartFile.getInputStream();
String path = uploadQNImg(inputStream, KeyUtil.genUniqueKey()); // KeyUtil.genUniqueKey()生成圖片的隨機名
return ResultVOUtil.success(path);
}
/**
* 將圖片上傳到七牛雲
*/
private String uploadQNImg(FileInputStream file, String key) {
// 構造一個帶指定Zone物件的配置類
Configuration cfg = new Configuration(Zone.zone2());
// 其他引數參考類註釋
UploadManager uploadManager = new UploadManager(cfg);
// 生成上傳憑證,然後準備上傳
try {
Auth auth = Auth.create(constantQiniu.getAccessKey(), constantQiniu.getSecretKey());
String upToken = auth.uploadToken(constantQiniu.getBucket());
try {
Response response = uploadManager.put(file, key, upToken, null, null);
// 解析上傳成功的結果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
String returnPath = constantQiniu.getPath() + "/" + putRet.key;
return returnPath;
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
//ignore
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
六、layui前端部分
// 點選thumbBox樣式的標籤完成圖片上傳
upload.render({
elem: '.thumbBox',
url: '/admin/xyz/qiniu',
multiple: false,
before: function(obj){
},
done: function(res){
debugger
//上傳完畢
},
error: function(index, upload){
debugger
//上傳錯誤
}
});