2009-07-27 15 views
7

Sto cercando un modo per lo streaming dinamico di scaricare un file zip da Amazon S3.Streaming di un file zip dinamico da Amazon S3

L'applicazione è ospitata su EC2 e i file sono memorizzati su S3.

È necessario consentire agli utenti di selezionare da un gruppo di file che verranno raggruppati e scaricati.

Ho sentito parlare di alcune librerie Actionscript (aszip e fzip) che potrebbero essere possibili, o potrebbero farlo in Ruby, o forse anche in PHP.

I file non hanno bisogno di alcuna compressione, zip è solo di essere utilizzato per raggruppare i file fino in un unico download ....

+4

Mi piacerebbe vedere una soluzione per questo che * non * implichi l'utilizzo del server web come proxy tra amazon s3 e il client. – andrewrk

+0

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

risposta

0

Se è possibile utilizzare Mono, DotNetZip lo farà.

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 è open source, gratuito.

0

Java supporta anche lo streaming di zip. dare un'occhiata al pacchetto java.utils.zip. l'ho usato per implementare una pipline composta da unità FTP, UNZIP, XSLT, CSV. Esso funziona magicamente.

Martin

3

Io uso Nginx Zip Module per lo streaming di file locali, ma non v'è possibilità di streaming da postazioni remote. Altrimenti potresti usarlo con l'archiviazione S3 montata su VFS come filesystem locale. Supporta la ricerca - download ripetibili e accelerati

+0

Sembra interessante, Gertas, grazie per il suggerimento. Lo esaminerò. Abbiamo finito per utilizzare una soluzione Flash, ma al momento stiamo rifacendo il nostro sistema, quindi questo potrebbe tornare utile. –

+0

Il modulo zip per nginx supporta zip64 il che significa che gli archivi possono contenere file> 2 GB, funziona molto bene. Suppongo che il download di Flash abbia alcuni inconvenienti: richiede il clic dell'utente per il salvataggio, non è possibile creare collegamenti a file zip e fino a 100 MB è ufficialmente supportato. – gertas