我尝试使用Backbone + ReactJS构建文件上传站点,我使用backbone-model-file-upload帮助我在骨干模型中保存文件并保存到mongodb(后端使用nodejs + multer)
但我发现这个模块存在一些问题, 因为我使用一个简单的表格来上传没有主干模型的文件,并使用multer在后端进行处理,并且它工作正常。
所以我更深入地看待我从骨干模型发送的请求中保存(我使用collection.create())并从正常形式发送请求,这是我得到的:
backbone-model-file-upload的主干模型:
显然,请求有效负载是主干模型中的一个混乱,对吧? 为什么有两个内容配置?并且名称错误,名称应为输入名称,如
有人知道发生了什么吗?
我不确定我是否在正确的位置查找,如果我错了请告诉我,我感谢您的帮助。
谢谢。
答案 0 :(得分:0)
好吧......经过几个小时的痛苦,我弄清楚发生了什么,实际上很简单......
事实证明,multer({ storage: storageConfig }).single('Input Name')
中的 输入名称 应与主干模型的属性(键)相同
例如,如果我的骨干模型看起来像
app.File = Backbone.Model.extend({
idAttribute : '_id',
urlRoot: '/db/collections',
fileAttribute: 'uploadFile',
defaults: {
_id: null,
title: ''
}
});
然后,我的傻瓜应该看起来像
`multer({ storage: storageConfig }).single('uploadFile')`
并且当您尝试在集合中创建和保存模型时, 你必须指定相同的属性值
例如:
var file_data = $(".new-file").prop("files")[0]; // Getting the properties of file from file field
var fileName = $(".new-file").val().split('/').pop().split('\\').pop();
if (fileName) {
this.props.files.create({
title: fileName,
uploadFile: file_data
},{ formData: true , wait: true});
ReactDOM.findDOMNode(this.refs.newField).value = '';
}
就是这样。
但是我不确定在这个解决方案中获得req.body是否可以。如果我弄明白的话,我会稍后更新。
感谢。