1. 程式人生 > >springboot(7)——上傳圖片/檔案到七牛雲端儲存

springboot(7)——上傳圖片/檔案到七牛雲端儲存

一、七牛雲快速入門

快速入門

  • 1、註冊賬號
  • 2、建立儲存空間, 命名xyz對應下面springboot 應用配置bucket
  • 3、建立成功後進入該空間,獲取該空間的測試域名,對應下面springboot 應用配置中的path
  • 4、點選“個人面板—金鑰管理”,獲取 accessKeysecretKey
二、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 ""; } }

參考官網文件Java sdk -> 檔案上傳 部分

六、layui前端部分
// 點選thumbBox樣式的標籤完成圖片上傳
upload.render({
    elem: '.thumbBox',
    url: '/admin/xyz/qiniu',
    multiple: false,
    before: function(obj){

    },
    done: function(res){
        debugger
        //上傳完畢
    },
    error: function(index, upload){
        debugger
        //上傳錯誤
    }
});

圖片/檔案上傳 - layui.upload