2009-07-27 20 views
7

Szukam sposobu na dynamiczne przesyłanie strumieniowe pliki ZIP z Amazon S3.Streaming dynamiczny zip z Amazon S3

Aplikacja jest hostowana na EC2, a pliki są przechowywane na S3.

Konieczność zapewnienia użytkownikom możliwości wyboru z grupy plików, które następnie zostaną do nich spakowane i pobrane.

Słyszeliśmy o kilku bibliotekach Actionscript (aszip i fzip), które mogą być możliwe lub mogłyby to zrobić w Ruby, a nawet PHP.

Pliki nie potrzebują żadnej kompresji, zip jest właśnie używany do zepnij pliki nawet w jeden pobrania ....

+4

Chciałbym znaleźć rozwiązanie tego problemu, które nie * wiąże się z wykorzystaniem serwera WWW jako pośrednika między Amazonem3 a klientem. – andrewrk

+0

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

Odpowiedz

0

Jeśli można użyć Mono, DotNetZip to zrobi.

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 jest oprogramowaniem typu open source, bezpłatnym w użyciu.

0

Java obsługuje również zrzuty strumieniowe. spójrz na pakiet java.utils.zip. użyłem tego do wdrożenia potoku składającego się z FTP, UNZIP, XSLT, jednostek CSV. To działa jak urok.

Martin

3

używam Nginx Zip Module do przesyłania plików lokalnych, ale nie ma opcji, aby strumień z odległych miejsc. W przeciwnym razie można go użyć z zainstalowanym VFS jako lokalnym systemem plików. Obsługuje pobieranie - wznawianie i przyspieszanie pobierania

+0

To brzmi interesująco, Gertas, dzięki za napiwek. Zajrzę do tego. Ostatecznie używaliśmy rozwiązania Flash, ale obecnie jesteśmy w trakcie przerabiania naszego systemu, więc może się to przydać. –

+0

Moduł ZIP dla nginx obsługuje zip64 co oznacza, że ​​archiwa mogą zawierać pliki> 2GB, działa bardzo dobrze. Przypuszczam, że pobieranie plików flash ma pewne wady - wymaga kliknięcia użytkownika, aby zapisać, nie może tworzyć linków do plików zip i oficjalnie obsługuje do 100 MB. – gertas