2016-06-28 42 views
0

我理解的字節,爲了使用多部分上傳文件到Amazon S3,說明現在的位置: http://docs.aws.amazon.com/AmazonS3/latest/dev/llJavaUploadFile.html更換亞馬遜S3上傳的文件

如何去替換字節(比如,之間上傳文件的範圍4-1523)?我是否需要利用分段上傳來實現這一目標?或者我使用HTTP標頭中指定的範圍發起REST呼叫?

欣賞任何建議。

+1

分段上傳旨在上傳大文件(雖然它可以和小文件一起使用)。它不旨在修改文件的「部分」。據我所知,在S3上修改文件的唯一方法是完全重新上傳更新的版本。 – Arnauld

回答

1

S3中的對象是不可變的。

如果它是一個小對象,則需要重新上傳整個對象。

如果是在尺寸對象超過5MB,則有一種變通方法,可以讓你「打補丁」的文件時,使用修改的方法來多上傳API。

背景:

如你所知,一個多上傳允許你上傳的「零件」,以最小的零件尺寸5MB和最大部分的文件數10,000。

但是一多「上傳」並不意味着你必須重新「上載」的所有數據,如果部分或全部的它已經在S3存在,你可以解決這個問題。

PUT part/copy允許您通過在現有對象中指定八位字節範圍來「上載」各個部分。或多個對象。

由於上傳是原子時,「現有對象」可以是你在改寫的過程中是對象,因爲它依然安然無恙,並在適當位置,直到你真正完成多載。

但似乎沒有使用的複製功能,爲你提供想要離開相同的部分數據阻止你,避免實際的上傳,然後使用普通PUT part請求來上傳你想擁有的部分不同的內容。

所以,雖然不是一個字節範圍補丁與粒度爲1個八位位組的水平,這可能是用於仿真一個大文件的就地修改是有用的。對於小於50GB的文件,有效「部分」的示例將替換5MB邊界上的最小5MB塊,或者替換最大5TB的500MB邊界上最小500MB塊,其中最小部分大小在極端值之間變化,因爲要求多部分上傳不超過10,000部分。問題在於零件必須以適當的偏移量開始,並且需要更換整個零件。