В моем приложении ASP.NET MVC будет много пропускной способности и места для хранения. Как настроить страницу загрузки ASP.NET, чтобы файл, загруженный пользователем, сразу попал на Amazon S3 без использования моего хранилища и пропускной способности веб-сервера?
Загружать файлы непосредственно в Amazon S3 из приложения ASP.NET
Ответ 1
Обновить февраль 2016:
Теперь AWS SDK может обрабатывать намного больше. Проверьте как создать форму и как создать подпись. Это должно помешать вам использовать пропускную способность на вашем конце, предполагая, что вам не нужно обрабатывать контент самостоятельно, прежде чем отправлять его на S3.
Ответ 2
Если вам нужно загрузить большие файлы и отобразить индикатор выполнения, вы должны рассмотреть flajaxian component.
Он использует флэш для загрузки файлов непосредственно на amazon s3, сохраняя вашу пропускную способность.
Ответ 3
Самый лучший и самый простой способ загрузить файлы на amazon S3 через asp.net. Взгляните на следующий пост в блоге. Я думаю, что это поможет. Здесь я объяснил, добавляя ведро S3 к созданию ключа API, установке Amazon SDK и написанию кода для загрузки файлов. Ниже приведен пример кода для загрузки файлов на amazon S3 с asp.net С#.
using System
using System.Collections.Generic
using System.Linq
using System.Web
using Amazon
using Amazon.S3
using Amazon.S3.Transfer
///
/// Summary description for AmazonUploader
///
public class AmazonUploader
{
public bool sendMyFileToS3(System.IO.Stream localFilePath, string bucketName, string subDirectoryInBucket, string fileNameInS3)
{
// input explained :
// localFilePath = we will use a file stream , instead of path
// bucketName : the name of the bucket in S3 ,the bucket should be already created
// subDirectoryInBucket : if this string is not empty the file will be uploaded to
// a subdirectory with this name
// fileNameInS3 = the file name in the S3
// create an instance of IAmazonS3 class ,in my case i choose RegionEndpoint.EUWest1
// you can change that to APNortheast1 , APSoutheast1 , APSoutheast2 , CNNorth1
// SAEast1 , USEast1 , USGovCloudWest1 , USWest1 , USWest2 . this choice will not
// store your file in a different cloud storage but (i think) it differ in performance
// depending on your location
IAmazonS3 client = new AmazonS3Client("Your Access Key", "Your Secrete Key", Amazon.RegionEndpoint.USWest2);
// create a TransferUtility instance passing it the IAmazonS3 created in the first step
TransferUtility utility = new TransferUtility(client);
// making a TransferUtilityUploadRequest instance
TransferUtilityUploadRequest request = new TransferUtilityUploadRequest();
if (subDirectoryInBucket == "" || subDirectoryInBucket == null)
{
request.BucketName = bucketName; //no subdirectory just bucket name
}
else
{ // subdirectory and bucket name
request.BucketName = bucketName + @"/" + subDirectoryInBucket;
}
request.Key = fileNameInS3 ; //file name up in S3
//request.FilePath = localFilePath; //local file name
request.InputStream = localFilePath;
request.CannedACL = S3CannedACL.PublicReadWrite;
utility.Upload(request); //commensing the transfer
return true; //indicate that the file was sent
}
}
Здесь вы можете использовать функцию sendMyFileToS3 для загрузки потока файлов на amazon S3. Для получения дополнительной информации проверьте мой блог по следующей ссылке.
Загрузить файл на Amazon S3 через asp.net
Я надеюсь, что вышеупомянутая ссылка поможет.
Ответ 4
ThreeSharp - это библиотека для облегчения взаимодействия с Amazon S3 в среде .NET.
Вам все равно нужно разместить логику для загрузки и отправки файлов на s3 в вашем приложении mvc, но вам не нужно будет сохранять их на своем сервере.
Ответ 5
Ищите библиотеку javascript, чтобы обрабатывать загрузку этих файлов на стороне клиента. Я наткнулся на javascript и php пример Dojo также, кажется, предлагает загрузку файла sysideides.