修太(326)50この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。ファイルアップロード用モジュールノンブロッキングIO環境であるnode.jsに向いた機能の1つに、ファイルアップロードがあります。いままでのWEBアプリケーションではファイルアップロードが完了するまで待たされていたり、負荷が大きかったりすることもあったと思いますが、node.jsを使用すれば、高パフォーマンスのアップロード処理を簡単に記述することができます。※1は画像や動画ファイルのアップロードやエンコードにフォーカスして開発されました。このモジュールの作者はTransloadit※2というWebサービスのアップロード処理をまるごと肩代わりするサービスも提供しており、とくにGB単位の巨大なファイルを扱う際にはこのモジュールが役に立つかもしれません。node-formidableモジュールの主な特徴は以下のとおりです。multipartパーサ自動でディスクへアップロードしたファイルを書き込み少ないメモリで動作するエラー処理が簡単に記述可能テストカバレッジ率が高い低コストで高パフォーマンス、シンプルで記述しやすいという特徴ですね。サンプルを動かしてみるではモジュールをインストールしてサンプルを動かしてみましょう。今回使用した環境は下記のとおりです。v0.4.11まずはnode-formidableモジュールをインストールします。formidable@latestつぎに公開されているサンプルを元に、jsファイルを作成します。サンプルではアップロードするファイルを指定し(複数可能)、指定したディレクトリにアップロードします。http://localhost:'+TEST_PORT+'/');ではそれぞれ解説をしていきます。最初に必要モジュールのrequireしています。TEST_TMPにアップロードされるファイルのパス、TEST_PORTに起動するポート番号を指定しています。TEST_PORT=3000;次にリクエストをうけた際のレスポンスを作成しています。ここでは単にhtmlとしてアップロード用のフォームを返しています。);multiple="multiple"を指定して、複数ファイル指定できるようにしています。/uploadにリクエストがくると、アップロード処理をしています。formidable.IncomingForm()で作成したオブジェクトに対して、「file」「field」「end」イベントを定義しています。ファイルを受信した時、フィールドと値のペアを受信した時、アップロードしたファイルがディスクへコピーし終わった時に実行されます。最後に指定外のリクエスト時のエラー処理を記述し、TEST_PORTで指定したポート番号でサーバーを起動しています。http://localhost:'+TEST_PORT+'/');では実際に動かしてみましょう。http://localhost:3000/http://localhost:3000にアクセスし、ファイルを指定してアップロードしてみます。/tmpディレクトリにファイルがアップロードされました。doneそれぞれ、pathにアップロードされた場所とその名前、nameにアップロード時のファイル名が出力されています。実際にはこれらファイル名とパス名をどこかで紐付けておく必要があるでしょう。まとめ今回はnode-formidableモジュールをご紹介しました。アップロードするプログラムがとても簡単に記述できたと思います。progressイベントを使用すれば、アップロードの進捗状況を得ることもできます。このモジュールを使用すれば使いやすいアップローダーが手軽に作れそうですね。3,265,262プログラマーです。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。夏目祐樹147こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。タイトルがすべてなのですが、社内で「登壇勉強会」が開催されたので、「登壇は最強の生存戦略である」というタイトルで登壇しました。本が出ていたので読んでみたところよかったので紹介させていただきます。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介255SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健233こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。カフェ店長のオカノです。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。