1

私がどこでも見つけた答えはどれもうまくいきませんでした。「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 を試してみましたが、どこにも行きませんでした。

髪の毛があったら、今すぐ抜いてしまいます。

4

3 に答える 3

1

model.save/の一部としてファイルを送信することはありませんcollection.create(model)

私が使用したのは、ファイル アップロード マネージャーのPluploadで、ファイルをアップロード ハンドラーに送信します。このアップロード ハンドラーは、アップロードされたファイルへのパスを返すか、参照がデータベース テーブルに格納されている場合は fileId を返します。

そこから、バックボーン モデルにプロパティを設定し、モデルを永続化します。アップロード完了イベントなどのために、モデルをlistenTopluploadすることができます。

于 2013-06-03T23:59:01.153 に答える
-2

データベースのやり取りを更新しなくても、バックボーンを介してファイルをアップロードした例をオンラインで見つけることができないため、結局誰かを雇わなければならなかったことが判明しました。ファイルをアップロードするためにどのツールを使用するかについて、誰もが同じ基本的なアドバイスを持っていますが、私の人生では、誰かがそれを実装している例を1つも見つけることができません.

コードがどのように機能するかを確認できるように、すべての人がコードを利用できるようにする予定です。

于 2013-06-05T18:16:11.043 に答える