データを Softlayer オブジェクト ストレージに渡すときに正しいチェックサムを計算する方法を見つけようとしています。
ETag が問題であることはわかっています。リクエストから削除すると機能するためですが、アップロードが破損していないことを確認するために使用することをお勧めします。
これは私の方法です:
public bool SaveFile(byte[] file, eFetchStorageContainers container, string internalFileName, string fileName = "", bool overPublicNetwork = false)
{
Authenticate(overPublicNetwork);
client = new RestClient(storage_url);
var resourcePath = string.Format("/{0}/{1}", container, internalFileName);
var req = new RestRequest(resourcePath, RestSharp.Method.PUT);
req.AddHeader("X-Auth-Token", auth_token);
req.AddFile(internalFileName, file, fileName);
var md5Checksum = BitConverter.ToString(MD5.Create().ComputeHash(file)).Replace("-", string.Empty).ToLower();
req.AddHeader("ETag", md5Checksum);
var resp = client.Execute(req);
return false;
}
ETag の定義方法は次のとおりです。
問題は、リクエスト本文ではなく、ファイルのチェックサムを取得しているという事実にあると思います。
ファイルだけではなく、リクエストボディのチェックサムを取得する必要があることを確認したいと思います。
上記が当てはまる場合、ボディのチェックサムを取得する方法さえわかりません-いくつかのガイダンスが大好きです...