問題解決19:七牛雲上傳文件覆蓋上傳報錯 403 key doesn't match scope&Java動態生成海報。

業務場景:我們做的是根據前端傳來的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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章