可通過客戶端瀏覽器的表單(form),跳過中間服務(wù)器,直接將文件上傳到FSS云存儲(chǔ),上傳效率更高效。特別地,文中請(qǐng)求參數(shù)放在 HTTP/HTTPS body 中傳遞,請(qǐng)確保您上傳表單格式符合 RFC 1867 協(xié)議規(guī)范。
1curl -X POST \
2 http://fss-my.vhostgo.com/<bucket> \
3 -F "Authorization: WESTYUN <Operator>:<Signature>" \
4 -F "Date: <Wed, 29 Oct 2014 11:26:58 GMT>"\
5 -F "Policy:<policy>"
6 # 其他可選參數(shù)...
域名
fss-<區(qū)域>.vhostgo.com
bucket、path
<> 是參數(shù)內(nèi)容,是需要用戶填寫的,填寫時(shí),把 <> 去掉。
bucket
,是創(chuàng)建的桶名;
Authorization
policy
,詳見認(rèn)證鑒權(quán)。文件大小超過 100M 后,建議使用大文件上傳;移動(dòng)端或者弱網(wǎng)環(huán)境上傳,推薦使用 REST API 上傳文件。
上傳參數(shù)
參數(shù)(不區(qū)分大小寫) | 必選 | 類型 | 說明 |
---|---|---|---|
save-key | 是 | string | 文件保存路徑,可用占位符,見 路徑設(shè)置 |
expiration | 是 | string | 請(qǐng)求的過期時(shí)間,UNIX UTC 時(shí)間戳,單位秒。不能超過 30 分鐘 |
date | 是 | string | 請(qǐng)求的日期時(shí)間,等效于簽名認(rèn)證中的 Date 如 Wed, 22 Apr 2020 02:26:58 GMT 或者 2020-04-22 10:26:58 |
return-url | 否 | string | 同步通知 URL,見 通知規(guī)則 |
notify-url | 否 | string | 異步通知 URL,見 通知規(guī)則 |
Content-MD5 | 否 | string | 上傳文件的 MD5 值,如果請(qǐng)求中文件太大計(jì)算 MD5 不方便,可以為空 |
Content-Type | 否 | string | 文件類型,默認(rèn)使用文件擴(kuò)展名作為文件類型 |
Content-Secret | 否 | string | 文件密鑰,用于保護(hù)文件,防止文件被直接訪問,見Content-Secret 參數(shù)說明 |
allow-file-type | 否 | string | 允許上傳的文件擴(kuò)展名,以 , 分隔。如 jpg,jpeg,png |
content-length-range | 否 | string | 文件大小限制,格式:min,max,單位:字節(jié)。如 102400,1024000,表示允許上傳 100Kb~1Mb 的文件 |
x-gmkerl-thumb | 否 | string | 圖片預(yù)處理參數(shù),見圖片處理 |
x-west-meta-ttl | 否 | string | 文件元信息, 指定文件的生存時(shí)間,單位天,最大支持180天 |
x-west-overwrite | 否 | string | 上傳文件時(shí)覆蓋已存在文件,默認(rèn)為false |
b64encoded | 否 | string | 對(duì)通過 Base64 編碼上傳的文件進(jìn)行 Base64 解碼,值為 on |
ext-param | 否 | string | 額外參數(shù),見 ext-param |
注
響應(yīng)信息
return-url 參數(shù)說明
參數(shù) | 說明 |
---|---|
code | 狀態(tài)碼,200 表示上傳成功 |
message | URL encoding 的描述信息,ok 表示上傳成功,其他的表示錯(cuò)誤信息 |
url | URL encoding 的文件保存路徑 |
time | UNIX UTC 時(shí)間戳,單位秒 |
sign | 簽名,詳見回調(diào)簽名 |
ext-param | 額外參數(shù),form表單上傳的ext-param參數(shù) |
notify-url 參數(shù)說明
save-key 支持的設(shè)置類型:
類型 | 格式 | 說明 |
---|---|---|
絕對(duì)值 | String | 指定具體的路徑,如: /path/to/file.txt |
時(shí)間類 | {year} {mon} {day} {hour} {min} {sec} | 日期、時(shí)間相關(guān)內(nèi)容(UTC 時(shí)間) |
md5類 | {filemd5} | 文件的 md5 值 |
隨機(jī)類 | {random} {random32} | 16 位或 32 位隨機(jī)字符和數(shù)字 |
文件名 | {filename} {suffix} {.suffix} | 上傳文件的文件名及擴(kuò)展名 |
舉例說明
xxxxxxxxxx
41上傳文件名:west.jpg
2UTC 時(shí)間:2023-01-01 8:8:8
3save-key:/{year}/{mon}/{day}/west_{random32}{.suffix}
4保存路徑為:/2023/01/01/west_b92c9cc21ce6a88ea696705c88b57c3f.jpg
xxxxxxxxxx
41上傳文件名:west.jpg
2UTC 時(shí)間:2023-01-01 8:8:8
3save-key:/{year}/{mon}/{day}/{hour}_{min}_{sec}_{filename}{.suffix}
4保存路徑為:/2023/01/01/8_8_8_west.jpg
當(dāng)使用 return-url 或 notify-url 參數(shù)發(fā)送返回信息或回調(diào)信息時(shí),結(jié)果信息(詳見通知規(guī)則)僅包含F(xiàn)SS云儲(chǔ)存指定的內(nèi)容,無法回傳用戶自定義的內(nèi)容。如果需要回傳自定義的內(nèi)容,可以指定 ext-param 參數(shù)。
sign 算法
sign 是根據(jù) code、url、time 拼接后進(jìn)行 MD5 處理得到。拼接時(shí)需注意 URL 的編碼與解碼問題
例如,code:200
url:'westtest/2023/5/27/upload_6Wf5fyz9uEkveHoSEzf3A7265U1IV6yp.jpg'
time:1434539183
拼接后的字符串是 200westtest%2F2023%2F5%2F26%2Fupload_00vI6jK3i4i661g8bUwr3DYXrs1qJ7CB.jpg1434539183 sign 是 'c631a75699eb510ad116543cfee07a19'
請(qǐng)?jiān)谑褂们?,將Action的URL改為自己的桶URL,且將Authorization設(shè)置為正確的權(quán)限認(rèn)證代碼,建議將type為text的表單類型改為hidden
xxxxxxxxxx
111<form action="http://fss-my.vhostgo.com/westtest" method="post" enctype="multipart/form-data">
2date:<input type="text" name="date" value="2023-05-30 09:16:52">
3Authorization:<input type="text" name="Authorization" value="WESTYUN westtest:xxxxxxx">
4policy:<input type="text" name="policy" value="eyJzYXZlLWtleSI6Ii97e9ey5zdWZmaXh9IiwiZXhwaXJhdGlvbiI6MTgwMH0=">
5save-key:<input type="text" name="save-key" value="{year}/{mon}/{day}/west_{random32}{.suffix}">
6expiration:<input type="text" name="expiration" value="1800">
7content-length-range:<input type="text" name="content-length-range" value="1024,1024000">
8return-url:<input type="text" name="return-url" value="http://west.cn">
9<input type="file" name="photo">
10<button type="submit">提交</button>
11</form>