業務場景:我們做的是根據前端傳來的json文件動態生成海報。
前期準備:
1、上傳海報的我們使用的是github上的開源項目poster:https://github.com/qbhy/poster-generater
作者很nice 哈哈。
2.我們有自己寫的七牛工具類。
在七牛上傳的時候遇到了上傳文件覆蓋上傳的問題:老是報錯403.
後來檢查代碼發現兩個問題:
1.當前文件名和要傳的要覆蓋上傳的key不一致。
2.poster臨時文件生成文件名和當前生成的key不一致。
解決:
將臨時文件改成當前新建普通文件。
將覆蓋上傳的key和文件文件名改成一致。(官方規定的)看文檔看半天才知道這個意思。
/**
* 返回上傳完成的海報地址
*
* @param file
* @return
* @throws IOException
*/
public String upload(File file, Poster poster) throws IOException {
//上傳到七牛雲 如果當前文件存在就進行覆蓋
QiniuUtils.MyRet myRet = QiniuUtils.upload(QiniuUtils.InputStream2ByteArray(file),
"/test/IMAGE/" + file.getName(),
QiniuUtils.getUpTokenCover(QiniuUtils.getDefaultBucket(), "/test/IMAGE/" + file.getName()));
String fileUrl = QiniuUtils.getUrlByKey(myRet.key);
log.info("上傳海報後返回結果:" + fileUrl);
return fileUrl;
}
上面這個第一個是:是你要上傳到七牛上的文件命名:"/test/IMAGE/"
第二個是根據當前的文件名來獲取token。
兩者一致就可以進行上傳。
key和fileName要保持一致。否則就會報403.