Я пытаюсь загрузить PDF через веб-форму в корзину S3 с помощью C# веб-API, который я развернул на шлюзе AWS API.
Вот мой код:
private static IAmazonS3 s3Client;
public static async Task<string> UploadS3FileAsync(string bucketName, IFormFile file, string keyName)
{
try
{
s3Client = new AmazonS3Client();
var fileTransferUtility = new TransferUtility(s3Client);
//Upload data from a type of System.IO.Stream.
var stream = file.OpenReadStream();
var length = (int)stream.Length;
byte[] data = new byte[length];
stream.Read(buffer: data, offset: 0, count: length);
var fileTransferUtilityRequest = new TransferUtilityUploadRequest
{
BucketName = bucketName,
InputStream = stream,
StorageClass = S3StorageClass.Standard,
ContentType = "application/pdf",
PartSize = 6291456, // 6 MB.
Key = keyName,
CannedACL = S3CannedACL.NoACL
};
await fileTransferUtility.UploadAsync(fileTransferUtilityRequest);
return "success";
}
catch (AmazonS3Exception e)
{
throw e;
//Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
}
catch (Exception e)
{
throw e;
//Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
}
}
Это прекрасно работает, когда я запускаю процесс локально, но когда я развертываю API на шлюзе, PDF, хотя и загруженный в корзину, поврежден и больше, чем исходный файл.
Я пробовал разные вещи, такие как установка типа двоичного носителя на шлюзе API, различные типы создания потока. Я уверен, что это как-то связано с кодированием, но я не уверен, где go дальше. Любая помощь будет принята с благодарностью.