【发布时间】:2017-02-02 07:56:12
【问题描述】:
尝试将 blob 对象发送到我的节点服务器。在客户端,我正在使用 MediaRecorder 录制一些音频,然后我想将文件发送到我的服务器进行处理。
saveButton.onclick = function(e, audio) {
var blobData = localStorage.getItem('recording');
console.log(blobData);
var fd = new FormData();
fd.append('upl', blobData, 'blobby.raw');
fetch('/api/test',
{
method: 'post',
body: fd
})
.then(function(response) {
console.log('done');
return response;
})
.catch(function(err){
console.log(err);
});
}
这是我的快速路线,使用 multer:
var upload = multer({ dest: __dirname + '/../public/uploads/' });
var type = upload.single('upl');
app.post('/api/test', type, function (req, res) {
console.log(req.body);
console.log(req.file);
// do stuff with file
});
但是我的日志什么也没返回:
{ upl: '' }
undefined
在这方面花了很长时间,所以任何帮助表示赞赏!
【问题讨论】:
-
部分multer
var upload = multer({ dest: __dirname + '/../public/uploads/' }); var type = upload.single('upl'); -
如果您尝试仅发送常规字符串而不是
blobData,您会得到什么吗?console.log(blobData)告诉您什么。 -
如果您从浏览器的 Web 开发工具查看获取网络请求,浏览器会发送什么
Content-Type标头? -
改成字符串后仍然输出:
{ upl: '' } -
blobData 是一个对象
Blob {size: 6937, type: "audio/wav"} size : 6937 type : "audio/wav" __proto__ : Blob
标签: javascript node.js express fetch multer