我试图弄清楚在将数据传递到 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 的定义方式:
我相信问题在于我正在获取文件的校验和而不是请求正文。
我想验证我应该得到请求正文的校验和,而不是单独的文件。
如果上述情况属实,我什至不确定如何获得身体的校验和 - 希望得到一些指导......