天天看點

【答疑】對象存儲OSS常見問題解答(咨詢類2)1. oss支援直接網絡流上傳麼,比如說客戶有個url,然後裡面的内容直接上傳到oss上面?2. HeadObject接口裡的 x-oss-actual-etag 是object實際的etag嗎? 3. oss遷移,能用運維的方式做麼?5. oss的bucket能否限制上傳檔案的類型 6. java sdk 流式下載下傳時候報這錯誤 error:Premature end of Content-Length delimited message body

1. oss支援直接網絡流上傳麼,比如說客戶有個url,然後裡面的内容直接上傳到oss上面?

解答:OSS支援流式上傳。

流式上傳是簡單上傳的一種,流式上傳使用InputStream作為檔案的資料源。
利用流式上傳可以上傳字元串,Byte數組,網絡流,檔案流。           

具體可以參考

https://help.aliyun.com/document_detail/84781.html?spm=a2c4g.11186623.6.689.7e5e3bdbBhY7x7#h2-u6587u4EF6u4E0Au4F202

2. HeadObject接口裡的 x-oss-actual-etag 是object實際的etag嗎?

解答: 不一定是。簡單上傳的時候是,分片上傳的時候不是。

OSS上的object會有etag标簽,etag主要是用來判斷服務端資料是否存在變化。
但是,這個标簽并不一定等同于檔案的MD5值,是以不建議作為校驗資料一緻性的依據。
如果需要校驗上傳到OSS的檔案和本地檔案是否一緻,可以在上傳檔案時攜帶檔案的Content-MD5值,
這時OSS服務端會幫使用者進行MD5校驗,隻有在OSS伺服器接收到的檔案MD5值和Content-MD5一緻時才可以上傳成功,進而保證上傳資料的一緻性。           
https://help.aliyun.com/knowledge_detail/39615.html?spm=5176.11065259.1996646101.searchclickresult.178f7d80XxvPEN

3. oss遷移,能用運維的方式做麼?

解答: 可以使用

OSSImport工具

OssImport工具可以将本地、其它雲存儲的資料遷移到OSS,它有以下特點:

支援的豐富的資料源,有本地、七牛、百度BOS、AWS S3、Azure Blob、又拍雲、騰訊雲COS、金山KS3、HTTP、OSS等,并可根據需要擴充;
支援斷點續傳;
支援流量控制;
支援遷移指定時間後的檔案、特定字首的檔案;
支援并行資料下載下傳、上傳;
支援單機模式和分布式模式,單機模式部署簡單使用友善,分布式模式适合大規模資料遷移
           

另外近日還推出了界面操作方式的

線上遷移服務

,可以更友善的進行資料遷移。

阿裡雲線上遷移服務是阿裡雲提供的存儲産品資料通道。

使用線上遷移服務,您可以将第三方資料輕松遷移至阿裡雲對象存儲 OSS,也可以在對象存儲 OSS 之間進行靈活的資料遷移。           

4. 如何開通日志服務?

解答:您可以在OSS管理控制台中使用日志分析功能,對海量日志進行分析。

日志分析為收費項目,資費标準請查閱

計費方式說明

日志分析操作和日志字段說明
OSS的使用者常需要分析通路日志和資源消耗相關的資料,如:

OSS存儲、流量、請求的使用情況
檔案生命周期過程中的日志查詢(建立、修改、删除)
熱點的檔案、其通路量以及産生的流量
擷取報錯請求日志清單及錯誤内容
           

具體開通步驟請參考:

https://help.aliyun.com/document_detail/70449.html?spm=5176.11065259.1996646101.searchclickresult.308a69bdc1jtXq

5. oss的bucket能否限制上傳檔案的類型

解答:通過postpolicy和url簽名是可以限制上傳的content-type。關于content-type的介紹可以參考:

https://help.aliyun.com/knowledge_detail/39522.html?spm=5176.11065259.1996646101.searchclickresult.7b323836Oi9Hzd

6. java sdk 流式下載下傳時候報這錯誤 error:Premature end of Content-Length delimited message body

解答: 原因是兩次讀取資料間隔時間超過1分鐘。OSS會關閉超過1分鐘沒有發送或接收資料的連接配接。

通常會傳回如下錯誤:

Exception in thread "main" org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 11990526; received: 202880
	at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:180)
	at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:200)
	at org.apache.http.impl.io.ContentLengthInputStream.close(ContentLengthInputStream.java:103)
	at org.apache.http.impl.execchain.ResponseEntityProxy.streamClosed(ResponseEntityProxy.java:128)
	at org.apache.http.conn.EofSensorInputStream.checkClose(EofSensorInputStream.java:228)
	at org.apache.http.conn.EofSensorInputStream.close(EofSensorInputStream.java:174)
	at java.io.FilterInputStream.close(FilterInputStream.java:181)
	at java.io.FilterInputStream.close(FilterInputStream.java:181)
	at com.aliyun.oss.event.ProgressInputStream.close(ProgressInputStream.java:147)
	at java.io.FilterInputStream.close(FilterInputStream.java:181)
	at samples.HelloOSS.main(HelloOSS.java:39)           

如果您每次讀取部分資料進行處理,且處理資料的時間不固定,建議使用

指定範圍讀取

,避免資料讀取時連接配接關閉。

具體請參考:

https://help.aliyun.com/document_detail/32024.html?spm=a2c4g.11186623.6.724.66192237ATTw3o#h2-u8FDEu63A5u5173u95ED6