問題タブ [archiverjs]
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.
javascript - Nodejs:すべてのファイルを取得してサブフォルダーからアーカイブする方法
私は node.js アプリに取り組んでいます。%APPDATA%/Archive/****/Licensing にアーカイブするフォルダーのリストがあります。**** は異なるバージョンです (v195、v196、v197 など)。
APPDATA から、すべてのバージョン フォルダーをループ処理し、バージョン フォルダー内で、異なるバージョン フォルダーのライセンス フォルダーのみを取得します。
これが私が試したものです
node.js - ダウンロード可能なオンライン リンクでアーカイバ モジュールを使用する
ノード アプリケーションで、インターネット上のさまざまな URL からダウンロードした pdf を含む zip ファイルをダウンロードしたいと考えています (ブラウザーに URL を入力すると、pdf をダウンロードするように指示されます)。https://github.com/archiverjs/node-archiverのgithub に記載されているアーカイバー モジュールを使用してきました。公式ドキュメントはhttps://www.archiverjs.com/にあります。
zipファイルにファイルを追加するための次の例を提供する部分で立ち往生しています。
残念ながら、URL を .append または .directory の最初のパラメーターに貼り付けるだけでは機能しないようです。ダウンロード可能なファイル (オンラインのファイル) を zip ファイルに追加する方法を知っている人はいますか?
node.js - アーカイバは PassThrough() を使用して結合/パイプし、関数ではなく追加してファイナライズする - Nodejs Stream
そのため、Axios ストリームを使用してファイルをダウンロードし、アーカイバーで圧縮してから、zip を s3 バケットにアップロードしたいと考えています。最初に、zip をローカル ディレクトリに保存したところ、このようにすべて正常に動作しました。マルチパイプ ライブラリを使用してストリームを結合しました。アーカイバーの zip ストリームを fs.createWriteStream と組み合わせる
アクシオスの最後に
すべてが期待どおりに機能し、Zip はすべてのファイルとともに保存されています。
次に、ストリームでs3にアップロードする方法を調査して探しました。私はこの方法を見つけました。 ストリームを s3.upload() にパイプする
inputStream .pipe(uploadFromStream(s3));
このようなアーカイバでこれを実装しました。
今、追加しようとすると、ファイナライズが関数ではない場合、同じ関数ではなく追加エラーが発生します。チェックすると、s3Stream.append と s3Stream.finalize が未定義であることがわかりました。私はそれが起こるべきだとは思いませんが、PassThrough が結合されたストリームから関数を削除していると思います。
また、このようなパイプ ストリームも機能しませんでした。