我想將物件上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。另外,我想驗證上傳物件的完整性。我該如何操作?
簡短說明
請依照下列步驟使用 Content-MD5 標頭來驗證上傳物件的完整性:
**注意事項:**當您使用 Content-MD5 標頭時,Amazon S3 會根據提供的 Content-MD5 值檢查物件。如果這些值不相符,就會收到錯誤訊息。
1. 計算物件的 Content-MD5 值。
2. 在上傳物件期間,透過將 Content-MD5 值作為請求標頭傳遞來驗證上傳物件的完整性。
解決方法
計算物件的 Content-MD5 值
Windows 作業系統
如果您使用的是 Windows 作業系統,則可以使用 Microsoft PowerShell 公用程式中的 Get-FileHash Cmdlet 來計算 MD5 摘要,如下所示:
Get-FileHash \path\to\file -algorithm MD5 | Format-List
**注意事項:**Get-FileHash Cmdlet 可用於 Microsoft PowerShell 公用程式 4.0 版及更新版本。
以下是輸出範例:
Algorithm : MD5
Hash : C9A5A6878D97B48CC965C1E41859F034
Path : \path\to\file
然後,將 base64 編碼套用到計算出的 MD5 摘要以取得所需的 Content-MD5 值:
$hashString ='C9A5A6878D97B48CC965C1E41859F034'
$hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '')
$ContentMD5 = [System.Convert]::ToBase64String($hashByteArray)
Echo $ContentMD5
yaWmh42XtIzJZcHkGFnwNA==
在這個範例中,Echo $ContentMD5 的輸出 ("yaWmh42XtIzJZcHkGFnwNA==") 是所需的 Content-MD5 值。
Linux 作業系統
如果您使用的是 Linux 作業系統,請執行下列 OpenSSL 命令以取得檔案的 Content-MD5 值:
openssl md5 -binary PATH/TO/FILE | base64
驗證上傳物件的完整性
當您使用 PutObject 將物件上傳到 Amazon S3 時,請將 Content-MD5 值作為請求標頭傳遞。Amazon S3 會根據提供的 Content-MD5 值檢查物件。如果這些值不相符,就會收到錯誤訊息。
Content-MD5 請求標頭也可用於 S3 UploadPart API。
相關資訊
一般要求標頭
S3 錯誤回應