Cargue archivos directamente en Amazon S3 desde la aplicación ASP.NET
(5)
Busque una biblioteca de JavaScript para manejar la carga del lado del cliente de estos archivos. Me encontré con un javascript y php ejemplo. Dojo también parece ofrecer una carga de archivo s3 en el lado del cliente.
Mi aplicación ASP.NET MVC requerirá mucho ancho de banda y espacio de almacenamiento. ¿Cómo puedo configurar una página de carga ASP.NET para que el archivo que cargó el usuario vaya directamente a Amazon S3 sin usar el ancho de banda y el almacenamiento de mi servidor web?
ThreeSharp es una biblioteca para facilitar las interacciones con Amazon S3 en un entorno .NET.
Aún necesitará alojar la lógica para cargar y enviar archivos a s3 en su aplicación mvc, pero no necesitará persistir en su servidor.
Si necesita cargar archivos grandes y mostrar una barra de progreso, debe considerar el componente Flajaxian .
Utiliza el flash para subir archivos directamente a amazon s3, guardando su ancho de banda.
La mejor y más fácil forma de subir archivos a amazon S3 a través de asp.net. Echa un vistazo a la siguiente publicación de blog por mí. Creo que este ayudará. Aquí expliqué al agregar un depósito S3 para crear la clave API, instalar Amazon SDK y escribir código para cargar archivos. Los siguientes son los ejemplos de código para cargar archivos en Amazon S3 con asp.net C #.
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
}
}
Aquí puede usar la función sendMyFileToS3 para cargar la transmisión de archivos a amazon S3. Para más detalles, consulte mi blog en el siguiente enlace.
Cargar archivo en Amazon S3 a través de asp.net
Espero que el enlace mencionado anteriormente ayude.
Actualización feb 2016:
AWS SDK puede manejar mucho más de esto ahora. Consulte cómo crear el formulario y cómo construir la firma . Eso debería evitar que necesites el ancho de banda de tu lado, suponiendo que no necesites procesar el contenido tú mismo antes de enviarlo a S3.