【发布时间】:2014-11-30 23:27:45
【问题描述】:
我正在努力让文件上传脚本正常工作。我正在使用带有 jQuery 的 node/express 后端触发 ajax 请求。
标记:
<input id="audio" type="file" name="audio">
前端JS:
var formData = new FormData();
formData.append("audio", e.data.audio, 'testname');
$.ajax({
url: 'api/upload',
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data){
alert(data);
}
});
使用自定义编写的模块执行以下操作并将其放入 e.data.audio
if(has('fileReader')){
return this.$input[0].files[0] || '';
}
当我选择作为小音频文件上传和提交时,e.data.audio 在设置到 ajax 函数参数对象时具有以下值:
缺乏 SO streetcred 意味着我需要将图像放在 imgur http://i.imgur.com/Mz5MNXR.png
发送请求后,我使用请求对象 (req.files) 的 files 属性来访问文件,以便保存它。
exports.upload = function(){
return function(req, res){
console.log(req.files);
if (req.files && req.files.audio){
var file = req.files.audio;
fs.readFile(file.path, function(err, data){
if (err){
res.send(err);
}
var newPath = __dirname + 'public/audio';
fs.writeFile(newPath, data, function(err){
if (err){
res.send(err);
}else{
res.send(true);
}
});
})
}else{
}
}
};
但问题是路径似乎总是客户端本地路径。
缺乏 SO streetcred 意味着我需要将图像放在 imgur http://i.imgur.com/9e82Xv1.png
我已经进行了大量的谷歌搜索,但似乎找不到任何相同的内容。我显然只是缺少一些基本的东西,需要有人指出我正确的方向。
【问题讨论】:
标签: javascript jquery ajax node.js file-upload