閱讀441 返回首頁    go 小米6


追加上傳__上傳文件_開發人員指南_對象存儲 OSS-阿裏雲

適用場景

之前提到的上傳方式,比如簡單上傳表單上傳斷點續傳上傳等,創建的Object都是Normal類型,這種Object在上傳結束之後內容就是固定的,隻能讀取,不能修改。如果Object內容發生了改變,隻能重新上傳同名的Object來覆蓋之前的內容,這也是OSS和普通文件係統使用的一個重大區別。

正因為這種特性,在很多應用場景下會很不方便,典型比如視頻監控、視頻直播領域等,視頻數據在實時的不斷產生。如果使用其他上傳方式,隻能將視頻流按照一定規律切分成小塊然後不斷的上傳新的Object。這種方式在實際使用上存在很明顯的缺點:

  • 軟件架構比較複雜,需要考慮文件分塊等細節問題。
  • 需要有位置保存元數據,比如已經生成的Object列表等,然後每次請求都重複讀取元數據來判斷是否有新的Object生成。這樣對服務器的壓力很大,而且客戶端每次都需要發送兩次網絡請求,延時上也會有一定的影響。
  • 如果Object切分的比較小的話,延時比較低,但是眾多Object會導致管理起來很複雜。如果Object切分的比較大的話,數據的延時又會很高。

為了簡化這種場景下的開發成本,OSS提供了用戶通過追加上傳(Append Object)的方式在一個Object後麵直接追加內容的功能。通過這種方式操作的Object的類型為Appendable Object,而其他的方式上傳的Object類型為Normal Object。每次追加上傳的數據都能夠即時可讀。

如果使用追加上傳,那麼上述場景的架構就變得很簡單。視頻數據產生之後即時地通過追加上傳到同一個Object,而客戶端隻需要定時獲取該Object的長度與上次讀取的長度進行對比,如果發現有新的數據可讀,那麼就觸發一次讀操作來獲取新上傳的數據部分即可。通過這種方式可以很大的簡化架構,增強擴展性。

不僅在視頻場景,在日誌追加上傳的場景下,追加上傳也能發揮作用。

上傳限製

  • 大小限製:在這種上傳方式下,Object不能超過5GB。
  • 命名限製
    • 使用UTF-8編碼
    • 長度必須在1-1023字節之間
    • 不能以“/”或者“”字符開頭
  • 文件類型:隻有通過追加上傳創建的文件才可以後續繼續被追加上傳。也就是說,其他通過簡單上傳、表單上傳、分片上傳得到的文件,不能在這些文件後麵追加上傳新的內容。
  • 後續操作限製:通過追加上傳的文件,不能被複製,可以修改文件本身的meta信息。

上傳的安全及授權

為了防止第三方往開發者的Bucket未經授權上傳,OSS提供了Bucket和Object級別的訪問權限控製,詳細解釋見訪問控製。為了授權給第三方上傳,OSS除了Bucket和Object級別的訪問權限外,還提供了賬號級別的授權,見上傳安全之授權第三方

上傳後續操作

如果上傳的是圖片需要處理,可以使用上傳圖片後雲端處理。如果上傳的是音頻或者視頻文件也可以使用媒體轉碼

功能使用參考

注意: 追加上傳不支持上傳回調操作。

最佳實踐

相關參考鏈接

最後更新:2016-11-23 16:04:09

  上一篇:go 斷點續傳上傳__上傳文件_開發人員指南_對象存儲 OSS-阿裏雲
  下一篇:go 上傳回調__上傳文件_開發人員指南_對象存儲 OSS-阿裏雲