從AWS S3換成阿里雲OSS儲存所踩的坑

2021-08-13 21:59:30 字數 2048 閱讀 6672

1.參照 開通oss服務並建立儲存空間,得到訪問的網域名稱endpoint、accesskeyid和accesskeysecret;

3. **移植

根據不同的開發語言,到的sdk參考中開啟對應語言的頁面,如本例中是php的,頁面如

3.b   構建本地php開發環境,修改sdk中sample下的config.php,即第1步中的網域名稱、ak/sk, 然後執行 sdk中 samples下的runall.php 即可看到各case都能正常執行

3.c  根據示例程式了解oss api, 可以是這裡的例子  也可以是sdk中samples下的各個*.php,使用最多的是object.php中的幾個介面。網頁中的一些介面描述尤其是返回值與samples中的有出入,最好是看samples中的**示例

3.d   把sdk放到應用的protected/extension/aliyun-oss目錄下,不用把sdk全部檔案都放進去,只需要放src下的oss目錄,及入口函式autoload.php即可,

即  aliyun-oss

------  autoload.php

------- oss/***

3.e  **中遇到的問題及解決

3.e.1  file upload failed  bucker_xx\/558be3c66aa2fda90452b6bc1acbd4d0

3.e.2   include(ossclient.php): failed to open stream:no such file or directory

3.e.3  "0:http body content is invalid:     上傳size 為0的檔案時,putobject會呼叫ossutil::validatecontent()對長度作判斷,允許0長度檔案時可以去掉此判斷

\/oss\/core\/ossutil.php:197:

\/oss\/ossclient.php(978):oss\\core\\ossutil::validatecontent('''')\n

3.e.4  "ret":"0:上傳的檔案不存在

3.e.5   error[8]: trying to get property of non-object

3.e.6  "ret":"0:nosuchkey: the specified keydoes not exist. requestid: 5a39db1d6ff1c5510c4153af

3.e.7   error[2]:filesize(): stat failed for file to be downloaded

header('content-disposition: attachment; filename="'.$downloadname.'"');

針對各個問題,歸納起來原因,主要在於aws s3與aliyun oss的介面設計差異及返回值差異,相對來說,aws s3的介面設計及引數尤其返回值obj中包含的資訊更詳細更完整些(如obj->header, obj->body等),aliyun oss的就相對簡單很多,返回的obj就是object的內容,不包含各種輔助資訊。

具體實現的介面及呼叫介面:

getossclient:

function getossclient()

catch (os***ception $e)    

return $client;

}            if (!$client->doesbucketexist(self::oss_bucket_name)) catch (os***ception $e)

}catch(os***ception $e)

呼叫sample:

$client = getossclient();

}try {

$ret = $client->putobject(self::oss_bucket_name, $objname, file_get_contents($filename));

try{

$obj = $client->getobject($bucket, $objname);

if(strlen($obj) > 0) {

AWSS3技術點分析

awss3技術點分析 一 s3的特點 l 面向internet的物件儲存 物件通俗來講就是乙個完整檔案,沒有進行追加寫入的 可斷電儲存在物理介質 硬碟或其他磁碟 中的檔案。l 乙個物件的大小可以高達5tb l 每個物件儲存在儲存桶中,通過開發人員分配的唯一金鑰進行檢索 l 彈性儲存,無限儲存空間 無...

給AWS S3新增事件

有時候當我們的系統完成了計算得到了新的資料時,把新的資料儲存在s3上,這時候我們需要進行下一步的處理。有幾種方式來處理 1 特定時間去觸發,比如你知道每天早上8點左右資料就能處理完,所以你可以將下乙個處理程式定時每天9點開始跑。2 你下乙個特定程式,每天8點的時候去check資料是否complete...

向AWS S3 上傳檔案

目的是為了要上傳大一些的檔案,如果中間網路出現問題,後面可以有斷點續傳類似的功能。控制台 aws s3api list multipart uploads bucket bucket name aws s3api abort multipart upload bucket bucket name k...