Нам нужно работать с веб-приложением на основе .net, которое будет загружать файлы в хранилище Amazon S3, используя панель администратора приложения, и клиенты будут передаваться загружаемым файлам с помощью client.aspx
файл.Как обслуживать не общедоступный файл непосредственно из хранилища Amazon s3
Мы рассмотрели несколько примеров и смутили некоторые примеры кода для загрузки не общедоступных файлов из хранилища S3. один из таких примеров ниже
AmazonS3Config config = new AmazonS3Config()
{
RegionEndpoint = RegionEndpoint.USEast1
};
IAmazonS3 client = new AmazonS3Client(accessKey, secretKey, config);
string dest = System.IO.Path.GetTempPath() + "event.mp4";
using (client)
{
GetObjectRequest request = new GetObjectRequest() { BucketName = "bucketname" + @"/" + "videos2015", Key = "event.mp4" };
using (GetObjectResponse response = client.GetObject(request))
{
response.WriteResponseStreamToFile(dest);
}
}
Response.Clear();
Response.AppendHeader("content-disposition", "attachment; filename=" + "dynamic_filename.png");
Response.ContentType = "application/octet-stream";
Response.TransmitFile(dest);
Response.Flush();
Response.End();
Когда пользователь нажимает на ссылку следующий код запускается на выполнение на веб-сервере и код загрузки файла на веб-сервере, а затем служит тот же файл для клиента ... если я не ошибаюсь. Не существует способа, которым мы можем обслуживать файл для загрузки непосредственно из хранилища AWS S3.
В приведенном выше случае это трата ресурсов сервера и увеличивает время загрузки.
Out файлы на AWS не Public они не являются общественности, так что URL не доступен напрямую из клиентских браузеров, как в случае типа общественного содержания
Я думаю, что решение моей проблемы Amazon S3 Pre-Signed URL – Learning
но вы можете дать общественности скачать только разрешение на ваше ведро? –
Я не могу сделать файлы общедоступными ... – Learning