問題タブ [zipstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1956 参照

c++ - ある反復子型から別の反復子型に変換できませんが、どちらもまったく同じです

ZipStreamライブラリをコンパイルしようとしていますが、これは効果的に zlib の C++ ラッパーです。

現在、次の 2 行で 2 つのコンパイル エラーが発生しています。

エラーは次のとおりです。

エラー 15 エラー C2440: 'initializing': c:\users\ahakeem\desktop\zipstream\ziparchive.cpp 423 1 zipstream
'std::_Tree_const_iterator<_Mytree>'に変換できません エラー 16 エラー C2440: : c:\users\ahakeem\desktop\zipstream\ziparchiveに変換できません 。 cpp 424 1 ジップストリーム
'std::_Tree_const_iterator<_Mytree>'
'initializing'
'std::_Tree_const_iterator<_Mytree>'
'std::_Tree_const_iterator<_Mytree>'

'std::_Tree_const_iterator<_Mytree>'したがって、基本的にコンパイラは、からに変換できないと言っています'std::_Tree_const_iterator<_Mytree>'

なぜそれが起こっているのか、どのように修正するのかについてのアイデアはありますか?

_core->entries_by_name.begin()編集: さらに調査した結果、が として宣言されていることがわかりました'std::set<file_info_32*, sort_by_offset>'。これは、イテレータが ( ) に割り当てようとしているものと明らかに矛盾していますstd::set<file_info_32*, sort_by_offset>

担当者が取得することを期待しているものと型が一致して_core->_entries_by_offset.begin();いるため、機能するように切り替えることができます。_entries_by_offset

これは、誰かがコードを壊し、気付かずにソース リポジトリにアップロードした可能性があるということですか? それとも、この誤った代入のシナリオは実際に一部のシステムでコンパイルできますか?

0 投票する
0 に答える
1439 参照

php - OS Xのアーカイブユーティリティに適したストリーミングzipアーカイブをPHPで作成するには?

ユーザーがサーバー上のすべてのファイルのzipファイルとデータベースダンプをダウンロードできるようにする、比較的小さなWebアプリケーション用のオンデマンドバックアップシステムを統合しようとしています。zip ファイルは、サーバー上の一時ディレクトリに全体としてパッケージ化されるのではなく、ユーザーにストリーミングされます。

これを実現するために、ZipStream と呼ばれるサードパーティの PHP クラスを使用しています。クラスはここでホストされ、特定のクラス ファイルはここで表示できます。ディレクトリを含めることをサポートしているため、このバージョンを選択しました(別の古いバージョンがあります)。shell_exec()また、セットアップは、またはを介し​​てシェル コマンドにアクセスできないサーバーでも機能するはずpassthru()です。

私の簡単なテスト セットアップは機能しておりunzip、コンソールからコマンドを使用するか、The Unarchiver.app. ただし、OS X のアーカイブ ユーティリティ (Mac OS X 10.6 およびそれ以前のバージョンとそれ以降のバージョンの可能性が非常に高い) は、次のエラーでアーカイブの抽出に失敗するため、問題を引き起こしています。

ログに記録された実際のエラーは次のとおりです。

この問題に関する考えられる説明をいくつか見つけました。StackOverflow のこちらこちらで、ZipStream クラスにパッチを適用して Zip 仕様に準拠させ、アーカイブ ユーティリティが期待どおりにアーカイブを展開できるようにしたいと考えています。

ATTR_VERSION_TO_EXTRACTZipStream クラスの「抽出に必要なバージョン」(定数に格納されている) は: ですが、その表記が前述の質問で言及されてx0Ax00いる標準と異なるかどうかはわかりません。0x000A

問題は、zip ファイルに追加されたディレクトリに関連しているようです。テキスト ファイルのみを含む zip ファイルでは、アーカイブ ユーティリティを使用しても問題は発生しません。

これは PHP の領域の周辺に沿って移動するため、正しい 16 進文字列を使用してスクリプトを編集する方法や、この特定のスクリプトに Zend ソリューションを適切に適用する方法がわかりません。

生成された zip をここにアップロードしました: http://dl.dropbox.com/u/6887873/test.zip

生成するコードは、サンプル コードの縮小版です。

編集:

問題をもう少し絞り込んだと思います。16進文字列が実際に違いを生むようには見えません。テキスト ファイルのみを含む生成された zip は、アーカイブ ユーティリティを使用してエラーなく展開されるため、ディレクトリを追加するとき、特にZipStream クラスをaddDirectoryContent()呼び出す を呼び出すときに破損が発生するようです。addLargeFile()ディレクトリが正しく追加され、無効なファイルが生成されることはありません。ミックスに追加されるとすぐにaddDirectoryContent()、アーカイブ ユーティリティがファイルの抽出に失敗し、上記のエラーが出力されます。

0 投票する
3 に答える
8856 参照

javascript - フォルダーから zip アーカイブを作成し、Node.js で構造を保持する

Node.js を使用して、既存のフォルダーから zip ファイルを作成し、構造を保持しようとしています。

この種のことを可能にする単純なモジュールがあることを望んでいました:

しかし、私はそのようなものを見つけることができません!

私はグーグルで検索してきましたが、これまでに見つけた最高のものはzipstreamですが、私が知る限り、私がやりたいことをする方法はありません. アプリはクロスプラットフォームでなければならないので、コマンドラインユーティリティを呼び出したくありません。

どんな助けでも大歓迎です。

ありがとう。

0 投票する
0 に答える
820 参照

zipstream - JavaでPipedStreamを使用してZipOutputStreamをZipInputStreamに変換します

PipedOutputStream と PipedInputStream を使用して、ZipOutputStream を ZipInputStream に変換したいと考えています。私は DataHandler から ZipOutputStream を受け取っていますが、それをファイルに書き込んでから開いて読み取るのではなく、この ZipOutputStream を ZipInputStream に変換して、ZipEntry を抽出していくつかのファイルに保存するなどのさらなる処理を行いたいと考えています。

どんな助けでも大歓迎です...ありがとう

0 投票する
0 に答える
746 参照

node.js - Node.js では、fs.createFileStream によって生成されたストリームは、別のストリームが最後まで読み取られた後は読み取れません。

node-zipstreamを使用して、node.js で ZIP ファイルを作成しています。ストリームを ZIP に追加するときに同期 API の錯覚を作成する単純なラッパーを作成しました (以下のコードに含まれています)。

リクエストストリームを使用すると、すべてが期待どおりに機能しますが、ファイル ストリームを使用すると、最初のストリームが完了した後に 2 番目のストリームが読み取れなくなります。

コンソール出力:

0 投票する
0 に答える
480 参照

php - Zipstream - PHP は出力ヘッダーの前にクエリ文字列を取得します

これを使用して、オンザフライの圧縮と Amazon バケットからのファイルの配信を作成しています。

たとえば、これをファイルに渡すことができます: index.php?q=movie1.m4v|movie2.m4v

私はこれを使用しました: http://pablotron.org/software/zipstream-php/これはうまくいきます。

しかし、次のコードは機能しません。

しかし、これはうまくいきません。それは私に空のzipファイルを与えます。

手動で行うと、正常に動作します。

クエリ文字列が読み込まれる前にヘッダーが送信されると思います。これにより、php ファイルの次のコードが台無しになりますよね? どうすればこれを回避できますか?

ありがとう

$files[$i] と . コカテネーション用。$files[i] と + ではありません。Javascript コーディングの習慣が私を混乱させた

作業バージョン:

0 投票する
1 に答える
7427 参照

php - ストリームcsvファイルphpを圧縮する方法

次のコードで .csv エクスポート ファイルを作成しました。

問題なく動作しますが、csv ファイルを zip ファイルに圧縮してダウンロードしたいと考えています。どうやって

0 投票する
1 に答える
1036 参照

grails - zip の作成を完了する前に、zip コンテンツを応答に送信します。

「ローカルビルド」で、一時フォルダーを作成し、その中に画像ファイルを追加して、ユーザーが圧縮してダウンロードすることに成功しました。残念ながら、テストサーバーにデプロイした後、そのような一時フォルダーを作成できず、許可エラーが原因で圧縮およびストリーミングできないと思います。基本的に私はパスにいます。Test-Server にフォルダーを作成するためのアクセス権を取得できず、このフォルダーとファイルを S3 バケットに保存してから、ここから zipOutputStream を作成する必要があります。 zipの作成を完了する前に、zipコンテンツを「オンザフライ」で応答に送信するだけです。これは可能ですか?もしそうなら、どうやってそうするつもりですか?この方法には、S3 にファイルを一時的に保存して圧縮してストリーミングするよりも利点があります。

フォルダーの作成と圧縮とストリーミングの現在のコード

0 投票する
0 に答える
1004 参照

node.js - NodeJs zip-stream またはアーカイバ モジュールを使用して、既存の zip アーカイブにファイルを追加する

私はこのシナリオを持っています:

ユーザーがダウンロードする zip ファイルがありますが、ダウンロードごとに、ユーザー固有のコンテンツ (ユーザー名とダウンロード時間など) を含む「readme」ファイルを含めたいと考えています。アーカイバー (zip-stream) モジュールを使用して、圧縮されたコンテンツを圧縮してブラウザーにストリーミングしました。目標は、CPU 使用率 (つまり、圧縮) とストレージ (つまり、同じ zip のコピーの作成) を最小限に抑えることです。短所でこれを達成するための可能な方法のいくつかを次に示します。

  1. ダウンロードするたびに、元の zip のコピーを作成し、動的に生成された readme ファイルをコピーに追加してから、ブラウザーにストリーミングします。これにより、多くのユーザーが同時にダウンロードしている場合、元の zip ファイルの複製コピーが多数作成されます。zip ファイルは 2Gb にもなる可能性があるため、これは受け入れられません。

  2. ダウンロードするたびに、元の zip ファイルと readme ファイルを含むストリーミング用の新しい zip を作成します。これにより、新しい zip がその場で作成されるため、CPU とストレージが節約されます。しかし、これは、ユーザーがダウンロード後に 2 回解凍する必要があることを意味し、受け入れられません。

「未ファイナライズ」zip ファイルを保存し、readme ファイルを追加してからファイナライズしてブラウザにストリーミングできるかどうか疑問に思っています。

0 投票する
1 に答える
1249 参照

node.js - 読み取りストリームの最後にデータを追加するnodejs

.txt ファイルを読み取り、最後にデータを追加して、最後に zipstream に送信したいと思います。今私がやっていることは、新しいファイルを書き込んでから、新しいファイルをzipstreamに使用することですが、不要な新しいファイルを作成せずに、その場で実行したいと思います。

私の質問は、読み取りストリームを作成し、それを変更して別の読み取りストリームに送信する方法です(おそらく途中で書き込みストリームを使用)。

これは可能ですか?

元のアイデアはこれでしたが、途中で迷ってしまいました: