节点服务器接收文件上传为String: '[object ArrayBuffer]'
Node server receiving file upload as String: '[object ArrayBuffer]'
我正在尝试上传文件到我的节点服务器。下面是我的客户端代码:
// data is {_id: 'somebigstring', file: an ArrayBuffer}
api.addDocument = function (data, cb){
// $.post(BASE_PATH + '/requests/addDocument', data, cb);
var formData = new FormData();
_.keys(data).forEach(key => {
formData.append(key, data[key]);
})
$.ajax({
type: 'POST',
url: BASE_PATH + '/requests/addDocument',
data: formData,
processData: false,
contentType: false
}).done(cb);
}
这是我在服务器端所做的(在Node和Express中):
app.use(multer({dest:'./uploads/'}));
app.use(function (req, res, next){
debugger;
next();
});
在debugger
行,我检查req.body
,得到这个:
{ _id: '555bcc06798e6f9c69b461e0',
file: '[object ArrayBuffer]' }
如何获取实际文件,而不是'[object ArrayBuffer]'
?
form.append()
只支持字符串、文件和Blob中的一种值。如果值不是其中之一,则将其转换为字符串(这就是为什么您将.toString()
的结果视为file
的值)。
所以一个解决方案可能是:
_.keys(data).forEach(key => {
var val = data[key];
if (val instanceof ArrayBuffer)
val = new Blob([val]);
formData.append(key, val);
})
相关文章:
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 有没有一种方法可以列出Ember.Object的所有绑定
- 如何取消object.prototypes javascript的一个函数
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 将*.js文件的内容放入Object中
- Object.prototype using 'this'
- 使用Object.create()的角度服务继承
- 如何使用object.assign()从其他对象引用基本对象属性
- 循环的数组推入在Object容器中具有不同的值
- reducers在redux中得到Function not Object,what'it’他错了
- JSON.stringify和Object.keys在同一个对象上产生不同的结果
- 闭包js框架-将ArrayBuffer转换为字符串
- 在使用object.create创建的对象中使用super
- 如何计算与php中的CRC32函数兼容的arrayBuffer(javascript中的From FileReader)
- Join架构验证:Join.object定义数组中的有效键
- jquery打印[object XMLDocument]而不是文件内容
- ExtJS 4 Object.prototype fail
- 使用Ajax的Phonegap发送图像的结果是[Object ArrayBuffer],而不是二进制
- 节点服务器接收文件上传为String: '[object ArrayBuffer]'