Этот код работает у меня в проекте Windows Forms:
Код: Выделить всё
using (IAmazonS3 client = new AmazonS3Client("accesskey", "secretaccesskey", s3Config))
{
TransferUtility utility = new TransferUtility(client);
TransferUtilityUploadRequest request = new TransferUtilityUploadRequest()
request.BucketName = bucketName;
request.Key = s3Filename;
request.FilePath = localFilePath;
utility.Upload(request);
}
Код: Выделить всё
private async void HandleFileSelected(InputFileChangeEventArgs e)
{
IReadOnlyList selectedFiles;
selectedFiles = e.GetMultipleFiles();
foreach (var file in selectedFiles)
{
var resizedFile = await file.RequestImageFileAsync(file.ContentType, 1024, 768);
var buf = new byte[resizedFile.Size];
using (var stream = resizedFile.OpenReadStream(maxAllowedSize: 1024 * 768))
{
await stream.ReadAsync(buf); // copy the stream to the buffer
var s3Config = new AmazonS3Config
{
MaxErrorRetry = 5,
RegionEndpoint = Amazon.RegionEndpoint.EUWest1,
AllowAutoRedirect = false
};
using (IAmazonS3 client = new AmazonS3Client("access key", "secretaccesskey", s3Config))
{
TransferUtility utility = new TransferUtility(client);
TransferUtilityUploadRequest request = new TransferUtilityUploadRequest();
request.BucketName = "mybucketname";
request.Key = "image.jpg";
request.InputStream = stream;
utility.UploadAsync(request);
}
}
}
}
Буду признателен за любые предложения, поскольку это вызывает у меня проблемы уже два дня, и я считаю, что это не так сложно проблема, как я ее нахожу...
Изменить:
Я попробовал следующий код в приложении Windows Forms, и он работает отлично . Но как только я помещаю его в Blazor, я получаю 403 запрещенные ошибки вместе с ошибкой «подпись запроса не соответствует предоставленной вами подписи».
Код: Выделить всё
public static async Task UploadFileAsync(
IAmazonS3 client,
string bucketName,
string objectName,
Stream stream)
{
var request = new PutObjectRequest
{
BucketName = bucketName,
Key = objectName,
InputStream = stream,
};
var response = await client.PutObjectAsync(request);
if (response.HttpStatusCode == System.Net.HttpStatusCode.OK)
{
Console.WriteLine($"Successfully uploaded {objectName} to {bucketName}.");
return true;
}
else
{
Console.WriteLine($"Could not upload {objectName} to {bucketName}.");
return false;
}
}
Подробнее здесь: https://stackoverflow.com/questions/775 ... dden-error