2009-07-27 14 views
7

Ich bin auf der Suche nach einer Möglichkeit, eine Zip-Dateien von Amazon S3 dynamisch zu streamen.Streaming einer dynamischen Zip von Amazon S3

Die Anwendung wird auf EC2 gehostet und die Dateien werden in S3 gespeichert.

Benutzer müssen die Möglichkeit haben, aus einer Gruppe von Dateien auszuwählen, die dann gebündelt und heruntergeladen werden.

Ich habe von einigen Actionscript-Bibliotheken (aszip und fzip) gehört, die möglicherweise möglich sind, oder könnte dies in Ruby oder sogar möglicherweise PHP tun.

Die Dateien benötigen keine Kompression, zip nur die Dateien zu bündeln in einem einzigen Download wird ....

+4

Ich würde gerne eine Lösung für diese sehen, die * nicht * die Verwendung des Webservers als Proxy zwischen Amazon S3 und dem Client beinhaltet. – andrewrk

+0

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

Antwort

0

Wenn Sie Mono verwenden, DotNetZip tun wird es verwendet.

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 ist Open Source, frei zu verwenden.

0

Java unterstützt Streaming-Zips auch. werfen Sie einen Blick auf das Paket java.utils.zip. Ich habe das verwendet, um eine Pipline zu implementieren, die aus FTP-, UNZIP-, XSLT-, CSV-Einheiten besteht. es wirkt wie ein Zauber.

Martin

3

Ich benutze Nginx Zip Module lokale Dateien zu streamen, aber es gibt Option von entfernten Standorten aus zu streamen. Andernfalls könnten Sie es mit VFS gemounteten S3-Speicher als lokales Dateisystem verwenden. Es unterstützt Suche - fortsetzbare und beschleunigte Downloads

+0

Das klingt interessant, Gertas, danke für den Tipp. Ich werde das untersuchen. Wir haben am Ende eine Flash-Lösung verwendet, sind aber gerade dabei, unser System neu zu erstellen, so dass dies nützlich sein könnte. –

+0

Zip-Modul für nginx unterstützt zip64, was bedeutet, dass Archive Dateien> 2GB enthalten können, es funktioniert sehr gut. Ich nehme an, Flash-Download hat einige Nachteile - benötigt Benutzer klicken, um zu speichern, kann keine Links zu Zip-Dateien erstellen und bis zu 100 MB wird offiziell unterstützt. – gertas