4

connect-busboy在 Express.js 4 中使用以上传文件。我app.use(busboy({ immediate: true });在 app.js中添加了。我的路由处理程序如下所示:

router.post('/upload', function (req, res) {
    var fstream;

    req.pipe(req.busboy);
    console.log(req.busboy);
    req.busboy.on('file', function (fieldName, file, fileName) {
        console.log('Uploading ' + fileName + '...');
        fstream = fs.createWriteStream(__dirname + '/data/' + fileName);
        file.pipe(fstream);
        fstream.on('close', function () {
            res.end('ok');
        });
    });
});

console.log(req.busboy);回报undefined。_ 为什么?!??!

4

2 回答 2

3

整理好了!事实证明contentType应该是form/multi-part,但事实并非如此

于 2014-09-25T21:19:14.260 回答
1

对于多部分表格:

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary63SFlxFGGDbxCqT7

边界是随机生成的,因此为了让它在 Node Express 中工作,建议将此标头设置为“未定义”,浏览器将处理其余部分。例如:

$http({
        method: 'POST',
        url: 'http://youurl.com,
        data: data,
        // Remove the 'Content-Type' header for multipart form submission
        headers: { 'Content-Type': undefined },
    }).then(function successCallback(response) {
        // this callback will be called asynchronously
        // when the response is available
    }, function errorCallback(response) {
        // called asynchronously if an error occurs
    });

对于任何与乔丹有相同问题的人:

“你能说得更具体点吗?关于什么的内容类型?”

这意味着在从浏览器发送到 Web 服务器的请求中设置“Content-Type”标头。例如,将内容类型标头设置为 JSON 如下所示:

Content-Type: application/json; charset=utf-8
于 2017-07-22T11:46:18.850 回答