問題タブ [busboy]
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.
amazon-s3 - Knox および Node.js を使用して Amazon S3 からダウンロードしたファイルが破損している
ファイルストレージ用の Amazon S3 バケットにアクセスするためにknoxを使用しています。私はあらゆる種類のファイルを保存しています - 主にMS Officeとpdfですが、バイナリまたはその他の種類のファイルである可能性があります。また、ストリーミングをサポートするために、 express 4.13.3 とbusboyとconnect-busboyを使用しています。ファイルをアップロードするとき、私は busboy で処理し、そこから knox 経由で S3 に直接送信するため、最初にローカル ディスクに書き込む必要がなくなります。
ファイルは正常にアップロードされます ( Transmitを使用して手動で参照およびダウンロードできます) が、ダウンロードに問題があります。
わかりやすくするために、ファイルをローカル ディスクに書き込むのではなく、メモリ内バッファーに保持します。GET リクエストを処理するために使用しているコードは次のとおりです。
ファイルがブラウザにダウンロードされます - 私は John Culviner のjquery.fileDownload.jsを使用しています - しかし、ダウンロードされたものは壊れていて開くことができません。ご覧のとおり.attachment
、MIME タイプと.append
追加ヘッダーのヘッダーを設定するために、express を使用しています (.set
代わりに使用しても違いはありません)。
Chrome でファイルをダウンロードすると、「Resource interpreted as Document but transferred with MIME type application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
」(Excel ファイルの場合) というメッセージが表示されるため、Express はヘッダーを正しく設定しており、ダウンロードされたファイルのサイズは、バケットを調べたときに表示されるものと一致します。
何がうまくいかないのですか?
javascript - ノード マルターで複数のファイルをアップロードする Dropzone を使用する場合の LIMIT_UNEXPECTED_FILE の問題
フロントエンドで Dropzoneを使用して 1 回のリクエストで複数のファイルをサーバーにアップロードし、Multerミドルウェアを使用して multipart/form-data を処理します。Dropzone 構成で設定uploadMultiple: true
すると、名前に [] が追加されます。たとえば、名前は files[0]、files 1などになります。
サーバー側のコード:
ただし、 multer().array(fieldname) は、フィールド名がフォームデータの名前と一致することのみを許可しているようです。そうしないと、LIMIT_UNEXPECTED_FILE エラーがスローされます。
[] を追加する代わりに名前を常に「フィールド」にするか、そのような異なる名前を処理するためにマルチターを作成することで、それを修正するための提案はありますか?
node.js - Node.js Express + busboy ファイルタイプチェック
busboy で Express を使用して、Node.js 4.x でファイルのアップロードを実現しようとしています。ファイルをアップロードして Azure Blob Storage に保存することは既に可能です。
いいえ、Azure に保存する前にファイルの種類を確認し、無効なファイルを拒否したいと思います。
マジックナンバーを使って検証したいと思います。const fileType = require('file-type');
ファイルの種類を決定するものを見つけまし
た。
今、私はこの作業をできるだけ効率的にしようとしていますが、ここで苦労しています。ファイル ストリームを Azure に直接パイプしたいのです。しかしその前に、ストリームから最初の 5 バイトをファイル タイプ別に処理されるバッファに読み込む必要があります。
ストリームから読み取ってから紺碧にパイプすることは確かに機能しません。いくつかの調査の後、ファイルを 2 つの PassThrough ストリームにパイプすることで解決策を見つけました。しかし今、私はこれらの 2 つのストリームを正しく処理するのに苦労しています。
この解決策は機能する場合があります。また、「終了後の書き込み」エラーが発生する場合もあります。また、ストリームが適切に閉じられていないと思います。通常、リクエストの後、エクスプレスはコンソールに次のようなログを記録するためです。
しかし、このログ メッセージは、おそらく何らかのタイムアウトが原因で、「blob のアップロードが完了」してから 30 秒から 60 秒後に表示されます。
これを修正する方法はありますか?
node.js - ノード変換ストリームが待機していません
Busboy からファイル ストリームを取得し、それをカスタム トランスフォーム ストリームにパイプして、検証とクリーニングを行います。小さなファイルで動作しますが、ファイルが大きくなると、カスタム ストリームは busboy ストリームが終了するのを待たずに切り捨てられます。
バスボーイコードは次のとおりです。
そして私の変換ストリーム:
javascript - 「ファイルのアップロードが速すぎます!」というメッセージが表示される Imgur API からのエラー
busboy を使用してリクエストを受け取り、アップロードのためにファイルを Imgur にパイプする node.js サーバーを作成しました。ただし、「ファイルのアップロードが速すぎます!」というメッセージが表示され続けます。Imgur からの応答であり、何が問題なのか正確にはわかりません。busboy に関するコード スニペットは次のとおりです。
ご覧のとおり、リクエスト ファイルを imgur のリクエストに直接パイプしています。ファイルをディスクに保存してから使用するだけで ReadStream を提供すると、fs.createReadStream()
完全に機能するため、リクエストからリクエストに直接パイプしようとするとエラーが発生する理由がよくわかりません。Imgurから得た正確な応答は次のとおりです。
誰かが以前にこれに遭遇した場合、それは役に立ちます...
node.js - NodeJS Multer を使用してアップロードを変換する
現在、ユーザー向けのファイル/画像アップロード サービスを実装しています。s3 バケットにアップロードする前に、これらの画像を変換 (サイズ変更/最適化) したいと考えています。
現在行っていること: フロントエンドでマルチパート フォームを使用し (実際の実装はここでは関係ないと思います..)、バックエンドでmulter
andmulter-s3
パッケージを使用しています。
ここで、私の実装は重要な部分を取り除いています。
やりたいこと: アップロードする前に画像を変換します。ここで multer/busboy を使用する必要があるのか、それとも NodeJS を使用するだけでよいのかはわかりません (したがって、NodeJS と Express にもタグを付けました)。
私の質問は、S3 バケットにアップロードする前に、どこでアップロードをインターセプトして変換できますか?
node.js - busboy を使用したファイル ストリームの解析と Express での GridFs への直接書き込み
:) やあ!
Express フレームワークでアップロード ファイルを GridFs に直接書き込む方法を理解しようとしています。
私は以下のようにコードを書きましたが、問題はファイルイベント「ファイル」が発行されないことです。
:(