2009-07-27 15 views
7

Estoy buscando una manera de descargar dinámicamente un archivo comprimido de archivos de Amazon S3.Transmitiendo un archivo zip dinámico desde Amazon S3

La aplicación se aloja en EC2 y los archivos se almacenan en S3.

Necesidad de dar a los usuarios la posibilidad de seleccionar entre un grupo de archivos que luego serán agrupados y descargados a ellos.

He oído hablar de algunas bibliotecas Actionscript (aszip y fzip) que podrían ser posibles, o podría hacer esto en Ruby, o incluso posiblemente en PHP.

Los archivos no necesitan ningún tipo de compresión, zip solo se utiliza para agrupar los archivos hasta en una sola descarga ....

+4

Me gustaría ver una solución para esto que * no * implique el uso del servidor web como un proxy entre amazon s3 y el cliente. – andrewrk

+0

https://github.com/gchaincl/s3zipper – alextsil

Respuesta

0

Si puede usar Mono, DotNetZip lo hará.

Response.Clear(); 
Response.BufferOutput= false; // necessary for chunked output 
String ReadmeText= "This content goes into an entry in the " + 
        "zip file. Timestamp, MD5, whatever." ; 
string archiveName= String.Format("archive-{0}.zip", DateTime.Now.ToString("yyyy-MMM-dd-HHmmss")); 
Response.ContentType = "application/zip"; 
Response.AddHeader("content-disposition", "filename=" + archiveName); 

using (ZipFile zip = new ZipFile()) 
{ 
    zip.AddEntry("Readme.txt", "", ReadmeText, Encoding.Default); 
    zip.AddFiles(filesToInclude, "files"); 
    zip.Save(Response.OutputStream); 
} 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

DotNetZip es de código abierto, de uso gratuito.

0

Java también admite la transmisión de cremalleras. eche un vistazo al paquete java.utils.zip. Lo utilicé para implementar una pipline que consiste en unidades FTP, UNZIP, XSLT, CSV. funciona a las mil maravillas.

Martin

3

lo uso Nginx Zip Module para transmitir archivos locales, pero no hay opción para transmitir desde lugares remotos. De lo contrario, podría usarlo con el almacenamiento S3 montado en VFS como sistema de archivos local. Es compatible con las búsquedas: descargas reanudables y aceleradas

+0

Eso suena interesante, Gertas, gracias por la sugerencia. Voy a mirar en esto. Terminamos usando una solución Flash, pero actualmente estamos en proceso de rehacer nuestro sistema, por lo que esto podría ser útil. –

+0

El módulo Zip para nginx admite zip64, lo que significa que los archivos pueden contener archivos de más de 2 GB, funciona muy bien. Supongo que la descarga flash tiene algunos inconvenientes: necesita que el usuario haga clic para guardar, no puede crear enlaces a archivos comprimidos y se admite oficialmente hasta 100MB. – gertas