1

Chrome および Firefox ブラウザーで見つかった jQuery Ajax + FormData オブジェクトを使用してファイルをアップロードしようとしています。私がそれを行うために使用しているコードは次のとおりです。

var formData = new FormData();
    formData.append('image', $scope.image.data);

     $.ajax({
       url: '/wines/'+id+'/image',
       type: 'POST',
       data: formData,
        processData:false,
        contentType:false
     }).done(function(){
       $location.path('/');
     });

開発者ツールを見ると、リクエストが正しく形成されていることがわかりますが、express は req.files ではなく req.body 内のコンテンツを認識しています。リクエスト ペイロードの画像は次のとおりです。

リクエストペイロード

エクスプレス設定:

app.configure(function(){
app.set('views', __dirname + '/app');
app.engine('.html', require('ejs').renderFile)
app.use(express.static(__dirname + '/app'));
app.use(express.bodyParser());
app.use(express.methodOverride());

app.use(app.router);
});

私が間違っていることは何ですか?? どうもありがとう。

4

1 に答える 1

1

これはファイルではないため、単なる文字列です。ファイルを AJAXFormDataに渡すには、File オブジェクトを渡す FormData.append必要があります。渡すものは、単なる文字列であるデータ uri です。

ボディ内のファイルは次のmultipart/form-dataようになります

------WebKitFormBoundaryNBylbsEYlWSsq2lB
Content-Disposition: フォームデータ。名前="画像"; ファイル名="999.jpg"
コンテンツ タイプ: 画像/jpeg

ファイル内容はこちら
------WebKitFormBoundaryNBylbsEYlWSsq2lB--
于 2013-02-15T03:21:34.103 に答える