複数の説明テキスト フィールド、ファイル選択フィールド、およびクロス ドメイン リクエスト (CORS バリアント) の送信ボタンを含むフォームがあります。
<form class="upload" id="upload_form" enctype="multipart/form-data" method="post" action="http://localhost:3001/upload/1234567890">
<div class="row-fluid">
<div class="span5 row-fluid" id="description" style="margin-left:0px;">
<div>
<label>Title</label>
<input class="span12" type="text" placeholder="Title" id="description_title" name="description_title"/>
<label>Author</label>
<input class="span12" type="text" placeholder="Author" id="description_author" name="description_author"/>
<label>Tags</label>
<input class="span12" type="text" placeholder="Tags" id="description_tags" name="description_tags"/>
<label>Description</label>
<textarea class="span12" id="description_textarea" name="description_textarea" rows="5" style="resize:none"></textarea>
<div id="buttons" class="row-fluid" style="margin-top: 5px">
<div class="span12">
<span class="span5 btn btn-primary btn-file" id="chose_files_btn" onclick="filechose_button.click()">chose files
<input id="filechose_button" type="file" name="fileData" data-url="http://localhost:3001/upload/1234567890"/></span>
<button id="upload_button" type="submit" name="upload" class="span5 offset2 btn btn-success" disabled="true" onclick="$('#upload_form').trigger('upload_fired');">upload</button>
</div> <!-- span12 -->
</div> <!-- buttons -->
</div> <!-- well -->
</div> <!-- video_description -->
</div> <!-- row-fluid -->
</form>
Node.js (Express.js) サーバーには次のルートがあります。
app.post('/upload/:id', function(req, res){
console.log(req.fields);
...
});
問題は、入力フィールドからデータが見つからないことです: req.fields
gets undefined
。
req
サーバー上のからデータ (テキストの説明とファイル) を見つけるにはどうすればよいですか?
アップデート:
すごい!req.body
実際にはすべてのフィールドにアクセスできますが、次のようになります。
console.log(req.body)
プリント:
{ description_title: 'aaa',
description_author: 'bbb',
description_tags: 'ccc',
description_textarea: 'ddd',
upload: '' }
しかし、fileData
フィールドはどこですか?つまり、説明(前述のフィールド)とともにアップロードしたファイルはどこにあるのでしょうか。
更新 2: 完了!
ファイルは body 属性ではなく、req.files
アダムとアンディファンに感謝!