2016-04-05 7 views
0

私は自分のgithubリポジトリを更新すると自動的に更新されるherokuでホストされているWebアプリケーションを持っています。私はのユーザーにフォルダ、画像などのすべてのアプリケーションファイルをダウンロードさせたいと考えていますをクライアント側からzip形式でダウンロードし、ローカルでオフラインで実行することができます。私はまた、彼のブラウザにダウンロードする前に、ユーザーのコメントを含むファイルをそのジップに追加したいと思う。クライアント側からアプリケーション全体をダウンロードする方法を教えてください。

私はgithubのに彼をリダイレクトすることによってそれを行うための方法を発見した(これは実際に彼をそこにリダイレクトされません、それだけでダウンロードするgithubのからジッパーを強制します):

window.location.replace("https://github.com/foo/FOO/archive/master.zip"); 

しかし、このソリューションのdoesn私がに追加したいので、私の仕事は、ユーザーのダウンロード要求の瞬間に作成される他のファイルを追加します。

誰にも解決策がありますか? herokkuにファイルを受け取り、jszipを使ってそれらをパックするように要求することで、これを行う方法はありますか?

+1

あなたは、[Webアプリケーションのキャッシュ](http://www.html5rocks.com/en/tutorials/appcache/beginner/)を見てしたいことがあります。ここでは、それは助けのかもしれない人のためのコードです。そうすれば、Webアプリケーションは通常のURLと同じURLでアクセスされますが、オンラインアプリに接続できない場合は自動的にローカルにキャッシュされたバージョンに戻ります。 – Frxstrem

+0

現代のブラウザはすべてWebアプリケーションのキャッシュをサポートしていますが、廃止され、[サービスワーカー](http://www.html5rocks.com/jp/tutorials/service-worker/introduction/)に賛成です。一般的にはより強力で、Webアプリケーションのキャッシュに関するいくつかの問題を修正します。しかし、私はアプリのキャッシュサポートがすぐに消えてしまうのではないかと疑います。 – Frxstrem

+0

@Frxstremウェブアプリケーションのキャッシングについての良い点は、私はこれをチェックアウトしていませんでしたが、それを設定するのは難しいと言うだけでなく、ユーザーがブラウズ中にいくつかのファイルを動的にロードできるようにしたいアプリ。だから私はユーザーにアプリケーション全体をダウンロードさせる方が良い選択だと思う。 – ThanosSar

答えて

0

githubのサービスJSZipUtilsとjszipを使用して解決策が見つかりました。

var content = null; 

JSZipUtils.getBinaryContent("https://github.com/foo/FOO/archive/master.zip", function(err, data) { 
    if(err) { 
    throw err; // or handle err 
    } 
    var zip = new JSZip(data); 

    // to remove a not needed file 
    zip.remove("CWAPP-master/abc.js"); 

    // to add a custom file    
    zip.file('CWAPP-master/myClientSideFile.js',file); 

    content = zip.generate({type:"blob"}); 
    saveAs(content, 'myZip'); // force download 

}); 
関連する問題