騰訊雲cos物件儲存服務檔案上傳api就是乙個大坑

2021-07-14 12:50:24 字數 2163 閱讀 3350

一、介紹

二、cos 檔案上傳api原始碼

/**

* 單個檔案上傳,適用於小檔案

* * @param bucketname

* bucket名稱

* @param remotepath

* 遠端檔案路徑

* @param localpath

* 本地檔案路徑

* @return 伺服器端返回的操作結果,成員code為0表示成功,具體參照文件手冊

* @throws exception

*/public string uploadfile(string bucketname, string remotepath,

string localpath) throws exception

fileinputstream localfileinputstream = null;

try catch (exception e) occur a error {}", localpath, e.tostring());

throw e;

} finally

}

三、為什麼是個坑

從上面的**中,我們可以看出,使用cos的檔案上傳介面,我們需要指定遠端檔案位址(就是我們需儲存到cos的那個目錄下的那個檔案比如/folder/1.txt)和本地檔案路徑。下面我用三點來說為什麼是個坑

1.在實際的開發中,很多時候,我們上傳檔案到web後端,在controller中以file物件存在,像spring mvc 的multipartfile 物件是不容易獲取到伺服器快取該檔案的路徑;

綜上所述,cos原有的介面就是乙個坑,根本不實用。那麼有什麼好的解決方法呢,請繼續往下面看。

四,解決方法

在api中自己定義了乙個擴充套件方法,把最後的localpath改為接收位元組陣列,**如下:

/**

* 流檔案上傳,適用於小檔案,自定義擴充套件方法

* * @param bucketname

* bucket名稱

* @param remotepath

* 遠端檔案路徑

* @param filecontent

* 檔案位元組陣列

* @return 伺服器端返回的操作結果,成員code為0表示成功,具體參照文件手冊

* @throws exception

*/public string uploadfileext(string bucketname, string remotepath,

byte filecontent) throws exception

有需要的朋友只需把該方法,拷貝到coscloud類當中就可以了。

五.把檔案轉化成位元組陣列方式

1、springmvc 上傳controller中multipartfile payfile檔案引數獲取成位元組陣列方式:

payfile.getbytes();//這個方法就可以獲取位元組陣列

2、將file檔案轉化成位元組陣列方式

public static byte getbyte(file file) throws exception 

bytes = new byte[length];

int offset = 0;

int numread = 0;

while (offset < bytes.length

&& (numread = is.read(bytes, offset, bytes.length - offset)) >= 0)

// 如果得到的位元組長度和file實際的長度不一致就可能出錯了

if (offset < bytes.length)

is.close();

} return bytes;

}}

騰訊雲 COS 物件儲存 簡單檔案上傳筆記

cos 物件儲存 簡單檔案上傳 com.qcloud cos api 5.6.24 我使用的是cos的本地檔案上傳方式,前端傳來的檔案資料是 multipartfile 型別的,但是cos在接收本地檔案上傳時接收的檔案資料型別是 file 因此需要先轉一下並生成乙個臨時的本地檔案 生成在伺服器端 因...

騰訊雲物件儲存COS安全方案介紹

對上雲企業來說,賬號安全和資源合理授權是構築立體防護體系的第一道門鎖。雲上資源管理的授權應該規避如下風險 為員工建了子賬號,但是授權過大 缺乏對使用帳號許可權的管理制度和流程 沒有定期審計管理使用者的許可權和登入資訊 賬戶分級 主賬號可以為所有合法的cam使用者,包括子賬號 協作者等,授予程式設計訪...

Laravel使用騰訊雲COS服務

第二步 因為使用這個桶我們需要兩個金鑰 雲 api 金鑰 secretid,雲 api 金鑰 secretkey 所以我們得再去申請這兩個金鑰 在 filesystems.php中修改 default cosv5 namespace use qcloud cos client class cosco...