私がどこでも見つけた答えはどれもうまくいきませんでした。「Backbone.js アプリケーションの開発」の例を拡張して、ファイルをアップロードしようとしています。フォームには enctype="multipart/form-data" がありますが、request.files は常に未定義です。
フォーム HTML は次のとおりです。
<form id="addBook" action="..." enctype="multipart/form-data">
<div>
<label for="coverImage">CoverImage: </label><input id="coverImage" name="coverImage" type="file" />
<label for="title">Title: </label><input id="title" type="text" />
<label for="author">Author: </label><input id="author" type="text" />
<label for="releaseDate">Release date: </label><input id="releaseDate" type="text" />
<label for="keywords">Keywords: </label><input id="keywords" type="text" />
<button id="add">Add</button>
</div>
</form>
新しいレコードを保存するバックボーンは
addBook: function( e ) {
e.preventDefault();
var formData = {};
var reader = new FileReader();
$( '#addBook div' ).children( 'input' ).each( function( i, el ) {
if( $( el ).val() != '' )
{
if( el.id === 'keywords' ) {
formData[ el.id ] = [];
_.each( $( el ).val().split( ' ' ), function( keyword ) {
formData[ el.id ].push({ 'keyword': keyword });
});
} else if( el.id === 'releaseDate' ) {
formData[ el.id ] = $( '#releaseDate' ).datepicker( 'getDate' ).getTime();
} else {
formData[ el.id ] = $( el ).val();
}
}
});
console.log(formData);
this.collection.create( formData );
}
呼び出されるノード。
//Insert a new book
app.post( '/api/books', function( request, response ) {
console.log(request.body);
console.log(request.files);
});
ノードに送信されるカバーイメージの値は正しいですが、request.files には何も取得されません。代わりに使用したいクールなドラッグアンドドロップがありますが、これが機能するまで行き詰まります。
JQuery-file-upload を試してみましたが、どこにも行きませんでした。
髪の毛があったら、今すぐ抜いてしまいます。