2009-07-27 5 views
7

Je suis à la recherche d'un moyen de télécharger de manière dynamique un fichier compressé depuis Amazon S3.Diffusion d'un fichier zip dynamique à partir d'Amazon S3

L'application est hébergée sur EC2 et les fichiers sont stockés sur S3.

Besoin de donner aux utilisateurs la possibilité de sélectionner parmi un groupe de fichiers qui seront ensuite regroupés et téléchargés vers eux.

Avoir entendu parler de quelques bibliothèques ActionScript (aszip et fzip) qui pourraient être possibles, ou pourrait le faire dans Ruby, ou même éventuellement PHP.

Les fichiers ne nécessitent pas de compression, zip vient d'être utilisé pour regrouper les fichiers vers le haut dans un seul téléchargement ....

+4

J'aimerais trouver une solution pour cela qui n'implique pas l'utilisation du serveur Web comme proxy entre amazon s3 et le client. – andrewrk

+0

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

Répondre

0

Si vous pouvez utiliser Mono, DotNetZip va le faire.

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 est open source, libre d'utilisation.

0

Java prend également en charge les zips de streaming. jetez un oeil au paquet java.utils.zip. J'ai utilisé cela pour implémenter une pipline composée d'unités FTP, UNZIP, XSLT, CSV. il fonctionne comme un charme.

Martin

3

J'utilise Nginx Zip Module pour diffuser des fichiers locaux, mais il y a possibilité de diffuser à distance. Sinon, vous pouvez l'utiliser avec le stockage S3 monté sur VFS en tant que système de fichiers local. Il prend en charge les téléchargements recherchables et accélérés

+0

Cela semble intéressant, Gertas, merci pour le conseil. Je vais regarder dans cela. Nous avons fini par utiliser une solution Flash, mais nous sommes actuellement en train de refaire notre système, donc cela pourrait être utile. –

+0

Module Zip pour nginx supporte zip64 ce qui signifie que les archives peuvent contenir des fichiers> 2 Go, ça marche très bien. Je suppose que le téléchargement flash a quelques inconvénients - l'utilisateur doit cliquer pour enregistrer, ne peut pas créer des liens vers des fichiers zip et jusqu'à 100 Mo est officiellement supporté. – gertas

Questions connexes