web-dev-qa-db-ja.com

大きなファイルをNodeJSWebサーバーにアップロードする

現在、NodeJSサーバー(ExpressJS)を使用してWebアプリケーションを提供しています。新しい要件の1つは、ユーザーが大きなビデオ(場合によってはギグ)をサーバーにアップロードできるようにすることです。その後、後で再度ダウンロードできるようになります。現在のスタックでこれを達成できますか?

フロントエンドで指定された「multipart/form-data」で Multer JS を使用したチュートリアルに出くわしました。これを使用すると、巨大な単一のビデオファイルをサーバーのディスクに書き込んでいる間、Expressは他のHTTPリクエストを処理できますか?

7
jiminssy

マルターは正常に動作するはずです。 HTTP経由で入ってくるデータをディスク上のファイルにストリーミングします。サーバーがロックされることはありません。次に、エンドポイントでそのファイルの場所にアクセスし、必要なことをすべて実行できます。

1
Randy

これを自分で行った後(最大20GBのファイル、マルターなし)、次のことをお勧めします(おそらく、ほとんどのファイルを検討しましたが、完全を期すためです)。

  1. 適切なアップロードコントロールを選択します(または独自に作成しますが、基本的にはデータをチャンクアップするものが最適です。私はpluploadを使用したと思います)

  2. サーバー上で、受信したチャンクデータを処理するAPIを作成し、アップロード中に一時的な場所に書き込みます(個々の部分もハッシュしてチェックすることをお勧めします)。

  3. アップロードが完了したら、ファイルを確認します(クライアントによって生成されたハッシュを使用し、アップロードされたデータと照合しました)

4
major-mann