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.body 而不是 req.files 中的内容。这是请求有效负载图像:

请求有效载荷

快速配置:

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

因为它不是一个文件,它只是一个字符串。要使用 AJAX 文件,FormData您必须将 File 对象传递给 FormData.append您所传递的数据 uri,它只是一个字符串。

正文中的文件multipart/form-data看起来像这样

------WebKitFormBoundaryNBylbsEYlWSsq2lB
内容处置:表单数据;名称=“图像”;文件名="999.jpg"
内容类型:图片/jpeg

文件内容在这里
------WebKitFormBoundaryNBylbsEYlWSsq2lB--
于 2013-02-15T03:21:34.103 回答