2013-02-15 44 views
1

我想使用在Chrome和Firefox瀏覽器上找到的jQuery Ajax + FormData對象上傳文件。我用做它的代碼如下:快速解析req.body中的多部分/表單數據發佈

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('/'); 
    }); 

通過查看開發人員工具,我可以看到該請求是正確形成,但是表達的是認識內部req.body而不是REQ內容。文件。這裏是請求負載圖像:

Request payload

快速配置:

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); 
}); 

什麼是什麼,我做錯了? 非常感謝。

回答

1

因爲它不是一個文件,它只是一個字符串。對於AJAX文件FormData你必須通過一個文件對象FormData.append你傳遞的是一個數據URI,它只是一個字符串。

multipart/form-data體的文件看起來像這樣

------WebKitFormBoundaryNBylbsEYlWSsq2lB 
Content-Disposition: form-data; name="image"; filename="999.jpg" 
Content-Type: image/jpeg 

The file content here 
------WebKitFormBoundaryNBylbsEYlWSsq2lB--
+0

你說得對,我是送的FileReader結果,當我需要發送的原始文件對象 – Pablo 2013-02-15 04:20:39