Существует множество подобных вопросов о переполнении стека, но у меня возникают проблемы с загрузкой большого файла в S3 через MVC.net.
На основании примеров aws .net sdk и некоторых других ответов у меня есть следующее:
public static void UploadToS3(System.IO.Stream stream, string bucketName, string keyName, bool asAttachement)
{
AmazonS3 client;
string accessKey = Settings.ApplicationSettings.AccessKeyID;
string secretKey = Settings.ApplicationSettings.SecretAccessKeyID;
// This config ensures s3 works in medium trust.
AmazonS3Config s3config = new AmazonS3Config();
s3config.UseSecureStringForAwsSecretKey = false;
using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey, s3config))
{
try
{
PutObjectRequest request = new PutObjectRequest();
request.WithBucketName(bucketName)
.WithKey(keyName)
.WithInputStream(stream);
if (asAttachement)
{
// add headers to ensure asset is downloaded, not opened in browser.
request.AddHeaders(Amazon.S3.Util.AmazonS3Util.CreateHeaderEntry("Content-Disposition", "attachment"));
}
S3Response response = client.PutObject(request);
response.Dispose();
}
catch(Exception ex)
{
throw new ApplicationException("Unable to upload asset." + ex.Message);
}
}
}
Веб-приложение прекрасно работает с небольшими файлами, и большие файлы будут загружаться на сайт (размещенный на Rackspace Cloud Sites), но время ожидания браузера истекает примерно через 30 секунд после публикации http, что недостаточно для загрузки файла. стрим в Амазонку. Браузер отключился от ответа на сервер.
Что мне нужно сделать, чтобы эта работа работала с большими файлами, или как мне загрузить файл на S3?