目的:使用Node.jsのは、アップロードファイルブラウザにアップロードされたファイルを表示します
基本的なツール:Node.jsのは、窓は、シェルコマンドを実行するためにcygwin64をダウンロードする必要があります
ファイル:サーバモジュール、ルーティングモジュール要求、要求処理プログラムモジュール、エントリ・ファイルindex.js
ステップ:ディレクトリにserver.js、router.js、requestHandlersを作成し、このファイルindex.js、いくつかのファイル以上のものを表します。
ステップ1:index.jsファイルを使用するには、より多くのモジュールを導入する必要が、
constのサーバーは=( './サーバー'を必要)。 constのルータは =( './ルータ'を必要)。 CONST requestHandlersの =は、(」./ requestHandlers')を必要とします。
次いで、ルーティング・ファイルindex.jsに定義する必要は、まず要求されたモジュールに対応するプログラムを提供するためのルーティング及び処理方法を保持するハンドルオブジェクトを定義(書かれていません)
//定义路由 せてハンドル= {}; ハンドル[ '/'] = requestHandlers.start。 [ハンドル = '/開始'] requestHandlers.start。 [ハンドル = '/アップロード'] requestHandlers.upload。 [ハンドル = requestHandlers.show '/ショー'];
最終的なコールサーバモジュールを導入する方法は、(server.startを提供する)と、2つのパラメータを渡して、最初のパラメータは、パス要求モジュールでルーティング方法router.routeを提供し、第二のパラメータは、ルーティングオブジェクト定義を処理するために使用されます
server.start(router.route、ハンドル);
コードファイルとしてindex.js
ステップ2:要求ハンドラモジュールrequestHandlers.jsファイル、我々は、ファイルを読み取るためのFSモジュールを導入すること手ごわいフォームのアップロードをフォーマットするためのモジュールを必要とします
CONSTのfs =は( 'FS'を必要とします)。
CONST驚異 =は(「驚異」)が必要。
我々はこの方法を改善する前に、インデックス、JSファイル、ファイルrequestHandlers.jsに対応し、パラメータRESを受けexports.start書き込み方法を、続く、応答パラメータは、サーバーモジュールに渡されます
= exports.start(RES)=> { // サーバーの応答パラメータが渡された ( "要求ハンドラ'スタート'と呼ばれていました。"にconsole.logを); res.writeHead( 200は、{ "Content-Typeの":「テキスト/ HTML "}); // ブラウザ形式を伝える LET本体= '<HTML>' + '<head>の' + 「<メタHTTP-当量="タイプ-コンテンツ"コンテンツ="テキスト/ HTML; '+ "文字セット8-UTF = "/> '+ ' </ head>の'+ ' <身体> '+ ' <フォームアクション=" /アップロード"にenctype =" multipart / form-データ"方式=" POST「> '+ // ファイルのエンコーディング変更 '<INPUTタイプ=名前を"ファイル" = "アップロード">' + '<INPUTタイプ= "送信"値= "ファイルのアップロード" />' + '</フォーム>' +を '</ BODY>' + '</ HTML>' ; res.end(本体); // ブラウザ、および体内に渡されたパラメータに応答し }。
= exports.upload(RES、REQ)=> { // 処理するためにアップロードされたファイル はconsole.logを( "要求ハンドラ'アップロード'と呼ばれていました。" ); フォームlet = 新新formidable.IncomingForm(); // アップロードファイルが処理されて はconsole.log( '処理のためにファイルをアップロード'を); form.parse(REQ、(ERR、フィールズ、ファイル) => { // ファイルをアップロードし、処理 はconsole.log(「ファイルのアップロード完全な" ); はconsole.log(files.upload.path); fs.renameSync(files.upload.path、 "/tmp/test.png"); // パス2へのファイルパスを保存 res.writeHead( 200は、{ "コンテンツタイプ": "テキスト/ HTML"です}); res.end("受信した画像</ BR> <IMG SRC = '/表示/'>" ); }); // res.writeHead(200は、{ "コンテンツタイプ": "text / plainの"}); / / res.end(「あなたできた送信:」+ querystring.parse(POSTデータ)は.text); //クエリ文字列は、モジュールのアップロードデータを使用してテキスト情報を取得します };
= exports.show(RES)=> { // ファイルからデータを読み取り、ページに表示される (「アップロードデータの表示要求がページに呼び出された」にconsole.log ); fs.readFile(「/ IMG /テスト.PNG ""バイナリ"(ERR、ファイル)=> { IF (ERR){ res.writeHead( 500、{"コンテンツタイプ":" text / plainの" }); res.end(ERR +「\ 「N- ); } 他{ res.writeHead( 200は、{ "Content-Typeの": "画像/ PNG" }); res.write(ファイル、 "バイナリ" ); res.end(); } }); } ;
それは、物事を行うには、対応するハンドラに対応します
ステップ3:ファイルサーバは、アドレスを解決URLを導入するための手段と、現在のパスを取得し、
constのURL =( 'URL')を必要とします。
次に、方法は、外部から提供開始を作成し、2つのパラメータを受信し、経路及びハンドル、それぞれ、処理及び対象の要求ルーティングをルーティングするために、本書で我々はまた、)モジュール解析のURLを(採用した。取得した経路アドレスのパス名、次に、方法は、渡されたルーティング要求パラメータを呼び出し、最後のリスニングポートルートオブジェクト、電流経路、受信した要求REQ、RESブラウザ応答を渡し
= exports.start(ルートは、ハンドル)=> { 必要とする( 'HTTP')createServer((REQ、RES)=> { constのパス名 = url.parse(req.url).pathname; // 現在のパスを取得 ルートを(ハンドル、パス名、RES、REQ); はconsole.log( 'パス名:' + パス名); })(聞く ;)8888 // リスニングポート8888 };
ステップ4:ファイル内のルータ、我々は、モジュールの機能を定義し、外部インターフェイスを提供する、機能は、4つのパラメータ、ルーティング・オブジェクト、電流経路、受信した要求REQ、RESブラウザ応答を受信し、それが機能して決定されますオブジェクトのルーティング機能における電流経路か、メソッドが呼び出された場合、および2つのパラメータRESブラウザに応答して受信された着信要求REQ、またはページが見つかりません、ブラウザ404に伝え
= exports.route(ハンドル、パス名、RES、REQ)=> { にconsole.log( "パス名" + パス名); IF(typeof演算処理[パス名] === '関数'){ // 要求があるかどうかと一致ハンドラ 戻りハンドル[パス名](RES、REQ); } 他{ にconsole.log( + "が見つかりません要求ハンドラ" のパス名); res.writeHead( 404、{ "コンテンツタイプ": "text / plainの" } ); res.end( "404が見つかりません" ); } };
一般的な考え方:
サーバー、ルーティング、要求ハンドラは別途必要があり、最終的にはすべてのファイルindex.js一緒に接続。
①まず、サーバモジュールを作成する別のサーバ処理モジュールを作成すると、4つのパラメータを渡す呼び出しパス処理機能続くモジュールと、URLリクエストパラメータを通る電流経路を得るため、最初のパラメータはインデックスであります.jsは、コレクションオブジェクト要求ハンドラを通過し、2番目のパラメータは、電流経路である第三のパラメータがREQある、RESは、第四のパラメータであり、最終的に開口部の関数としてのリスニングポートとコードが容易にしますindex.jsが導入され、関数が最初のパラメータは、処理経路の関数であり、2つのパラメータを受け付け、第2のパラメータは、サーバーモジュールが完成するオブジェクト要求ハンドラ関数、です。
②次に関数として開きますパス処理モジュールを作成し、関数は、4つのパラメータを受け取り、最初のパラメータは、着信要求処理サーバ機能モジュールからのオブジェクトのコレクションであり、第二のパラメータは、サーバモジュールから送信されます経路は、第三パラメータがREQで、RESは、第四のパラメータであり、YESの場合、サーバーモジュールからオブジェクトのコレクションを処理するパス要求に渡されたパラメータは、機能するかどうかを決定するように機能するように、ならば、決定します要求ハンドラと渡しREQ、解像度を呼び出します。
③必要に応じて異なる要求ハンドラの異なる開口関数、関数のパラメータ受信REQ、RESを作成次に作成要求ハンドラモジュール。
④index.jsは最終的に対応するパラメータと対応するオブジェクト要求ハンドラのプログラムモジュールとして所望の経路を開発するために、パス処理モジュール、要求ハンドラモジュールは、次に空のオブジェクトを作成し、ファイルサーバモジュールが導入され、作成しますパラメータに割り当てられ、最終的に機能サーバモジュールの開口部、および2つの引数を呼び出して、最初の引数は、パス処理モジュールの外部機能で、新しく作成されたコレクションオブジェクト要求ハンドラ。
出典チュートリアルから:https://www.nodebeginner.org/index-zh-cn.html