我使用亞馬遜S3與.NET SDK,而低級別的API,他們提供的。我正在尋找關於如何嘗試重新啓動文件的多部分上傳的建議。這是一次重啓,因爲例如網絡連接斷開,或者存在內部異常,這會在文件的所有部分上傳到亞馬遜之前終止程序。亞馬遜S3 - 重新開始上傳失敗
- 該文件是一個大約400MB的.MTS視頻文件。
- 文件塊被上傳在5MB部分。
我使用他們的示例代碼中爲每個多上傳的文檔: -
for (int i = filePartCounts[0]; filePosition < contentLength; i++)
{
if (i == 10)
{
throw new Exception();
}
UploadPartRequest uploadRequest = new UploadPartRequest
{
BucketName = "MyAwesomeBucket",
Key = "my-file-" + now + ".mts",
UploadId = initiateResponse.UploadId,
PartNumber = i,
PartSize = partSize,
FilePosition = filePosition,
FilePath = "C:\\path\\file.MTS",
Timeout = new TimeSpan(0, 15, 00)
};
uploadResposes.Add(client.UploadPart(uploadRequest));
File.WriteAllText(@"C:\\file\\data.txt", "my-file-" + now + ".mts/" + i + "/" + maxPartNumber);
filePosition += partSize;
Console.WriteLine("Successfull uploaded part " + i + " of " + maxPartNumber + " - Bytes " + (filePosition - partSize) + " bytes to " + filePosition + " bytes");
}
由於這是一個原型,我保存記錄到一個文本文件,鍵名爲,上次成功部件號和部件號的最大數量,以便我可以在下次運行程序時讀取它,獲取密鑰名稱,並從第一個未上傳的塊開始。現在,我已經通過手動調用模擬程序示數: -
if (i == 10)
{
throw new Exception();
}
所以73的程序退出後的第9塊。
我試圖獲得該項目從亞馬遜S3服務器回來時,面對的問題。我得到一個異常,當我打電話: -
client.GetObject(request);
我想找回的文件與零件的其餘部分,然後再繼續上傳的部分。出於顯而易見的原因,我得到了'指定鍵不存在'的例外。因爲該文件尚未在Amazon S3上完成。
我的問題是,如果這也不行,我怎麼找回那種沒有成功上傳到Amazon S3的文件的部分,以再繼續添加零件10日起呢?
任何幫助大量的讚賞! 謝謝。 CompleteMultipartUpload
被調用後