Я пытаюсь загрузить файл в S3 (PutObjectAsync), а затем проверить, что он там есть.
Я обнаружил, что мой сгенерированный хэш MD5 не соответствует возвращенному ETag. Какой правильный способ проверки файла?
using (var fileDataStream = new MemoryStream())
{
using (var md5 = MD5.Create())
{
file.CopyTo(fileDataStream);
var hash = md5.ComputeHash(fileDataStream.ToArray());
var hashAsString = Convert.ToBase64String(hash);
var request = new PutObjectRequest
{
CannedACL = S3CannedACL.PublicRead,
InputStream = fileDataStream,
BucketName = _optionsAws.Value.MediaBucketName,
Key = s3FileName
};
var result = await _s3Client.PutObjectAsync(request);
if (result.ETag != hashAsString)
{
ret.isSuccess = false;
ret.errorMessage = "Non matching hash";
}
else
{
ret.isSuccess = true;
}
}
}