2009-07-27 27 views
7

Amazon S3からファイルのzipファイルを動的にストリーム配信する方法を探しています。Amazon S3からダイナミックジップをストリーミング

アプリケーションはEC2上でホストされ、ファイルはS3に保存されます。

ファイルグループから選択し、バンドルしてダウンロードする必要があります。

RubyやPHPで可能なActionscriptライブラリ(aszipとfzip)がいくつかあると聞いたことがあります。

ファイルは任意の圧縮を必要としない、ジッパーはただ1件のダウンロードにファイルを束ねるために使用されている....

+4

amazon s3とクライアントの間でプロキシとしてWebサーバーを使用しない*これを行うためのソリューションを見たいと思います。 – andrewrk

+0

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

答えて

0

あなたがモノを使用できる場合は、DotNetZipはそれを行います。

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はオープンソースであり、無料で使用できます。

0

Javaもストリーミングジップをサポートしています。 java.utils.zipパッケージを見てください。私はそれをFTP、UNZIP、XSLT、CSVユニットで構成されたpiplineを実装するために使用しました。それは魅力のように働く。

マーティン

3

私は、ローカルファイルをストリーミングするNginx Zip Moduleを使用しますが、遠隔地からストリーミングするためのオプションがあります。そうでなければ、VFSがS3ファイルシステムをローカルファイルシステムとしてマウントして使用することができます。 これはシーク再開可能と高速化されたダウンロードをサポートします

+0

これは興味深いですね、Gertas、チップのおかげで。私はこれを調べます。私たちはFlashソリューションを使用して終了しましたが、現在システムをやり直し中ですので、これは便利です。 –

+0

nginxのZipモジュールはzip64をサポートしています。これは、アーカイブに2GBを超えるファイルが含まれている可能性があることを意味します。私はフラッシュのダウンロードにはいくつかの欠点があると思います - ユーザーのクリックを保存する必要があり、Zipファイルへのリンクを作成できず、最大100MBが公式にサポートされています。 – gertas