2008-09-22 54 views

Respuesta

25

actualización Feb 2016:

El SDK de AWS puede manejar mucho más de esto ahora. Consulte how to build the form y how to build the signature. Eso debería evitar que necesite el ancho de banda de su lado, suponiendo que no necesita procesar el contenido usted mismo antes de enviarlo a S3.

+1

Nice !!! Es difícil encontrar algunas de esas muestras de Amazon y esta fue una que definitivamente podría haber usado hace un tiempo. Gracias. –

+4

Esto es años después pero escribí un [blog] (http://codeonaboat.wordpress.com/2011/04/22/uploading-a-file-to-amazon-s3-using-an-asp-net-mvc -aplicación-directamente-de-los-usuarios-navegador /) sobre esto ya que recientemente tuve que configurarlo. – floatingfrisbee

+0

Hola, el enlace no funciona ... – Learning

1

ThreeSharp es una biblioteca para facilitar las interacciones con Amazon S3 en un entorno .NET.

Todavía necesitará alojar la lógica para cargar y enviar archivos a s3 en su aplicación mvc, pero no será necesario que los conserve en su servidor.

+4

ThreeSharp está suspendiendo su proyecto debido a los esfuerzos de Amazon. Esto es de su sitio: "Recomendamos a los desarrolladores migrar al SDK de AWS a la brevedad posible, ya que ya no mantendremos la biblioteca ThreeSharp". – Stradas

+0

@kyle, ¿Esto significa que AWS SDK tiene una característica incorporada para transmitir archivos directamente a AWS S3 cubo ... – Learning

1

Busque una biblioteca de JavaScript para gestionar la carga de estos archivos en el lado del cliente. Me encontré con un javascript y php example Dojo también parece ofrecer una carga de archivo de cliente s3.

5

Si necesita cargar archivos de gran tamaño y visualizar una barra de progreso, debe considerar el flajaxian component.

Utiliza el flash para cargar archivos directamente en Amazon S3, guardando su ancho de banda.

+1

Flajaxian fue genial, lo usé en producción durante un par de años. Pero recientemente se ha vuelto problemático en Mac OS debido a diferencias sutiles con el componente Flash en dispositivos Mac. Ya no recomendaría este componente para uso de producción, los desarrolladores han dejado de admitirlo ... solo necesita ver todas las publicaciones sin respuesta en Codeplex. – QFDev

2

La mejor y más fácil manera de cargar 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.

Upload File to Amazon S3 via asp.net

espero que el enlace mencionado anteriormente será de ayuda.

+0

Este código se refiere a la solución paga y ¿se carga directamente en Amazon s3 bucket ?. – Learning

+0

Sí, se carga directamente en Amazon S3 bucket especificado por usted. Solo debe colocar las credenciales de la API y el nombre del depósito donde desea cargar los archivos. El resto será cuidado por el código.Se describe en detalle en la publicación del blog. –

Cuestiones relacionadas