Javascript Node.js+;ajax,上传文件
Javascript Node.js+;ajax,上传文件,javascript,jquery,node.js,ajax,Javascript,Jquery,Node.js,Ajax,我一直试图上传一个带有node.js和ajax的文件,但我不能让它工作。我没有收到错误,但我的存储文件夹中没有任何内容 index.js: app.post('/newFlavour', function(req, res){ console.log("[INFO] New flavour request: " + req.body.name); let form = new formidable.IncomingForm(); form.uploadDir = path.join(__dir
我一直试图上传一个带有node.js和ajax的文件,但我不能让它工作。我没有收到错误,但我的存储文件夹中没有任何内容 index.js:
app.post('/newFlavour', function(req, res){
console.log("[INFO] New flavour request: " + req.body.name);
let form = new formidable.IncomingForm();
form.uploadDir = path.join(__dirname, '/storage');
form.on('file', function(field, file) {
fs.rename(file.path, path.join(form.uploadDir, file.name));
});
form.on('error', function(err) {
console.log('An error has occured: \n' + err);
});
form.on('end', function() {
console.log('success');
});
form.parse(req); });
我的ajax请求函数:
function createFlavour() {
let file = $('#upload-input').get(0).files;
const formData = new FormData();
formData.append('uploads', file, file.name);
console.log(file)
$.ajax({
url: "http://localhost:3000/newFlavour",
type: "POST",
dataType: "json",
data: JSON.stringify({
name: $('#name').val(),
file: file
}),
contentType: "application/json",
success: function (data) {
console.log(data);
},
error: function () {
alert("Error occured");
},
complete: function () {
console.log("complete")
}
});
clearModal(); }
输入标记:
<input id="upload-input" type="file" name="upload"></br>
我不知道我错过了什么
提前谢谢 您应该在开始时解析
req
。也
文件开始
在上载流中检测到新文件时发出。用这个
事件,如果要在缓冲时将文件流式传输到其他位置
文件系统上的上载
on('fileBegin',函数(名称,文件){})
这样做应该可以保存您的文件
app.post('/newFlavour', function (req, res){
var form = new formidable.IncomingForm();
form.parse(req);
form.on('fileBegin', function (name, file){
file.path = __dirname + '/storage/' + file.name;
});
form.on('file', function (name, file){
console.log('Uploaded ' + file.name);
});
res.status(200);
});
同样,你的ajax帖子是错误的,这应该是可行的
var data = new FormData();
$.each($('#upload-input')[0].files, function(i, file) {
data.append('file-'+i, file);
});
$.ajax({
url: 'http://localhost:3000/newFlavour',
data: data,
cache: false,
contentType: false,
processData: false,
method: 'POST',
type: 'POST', // For jQuery < 1.9
success: function(data){
alert(data);
}
});
var data=new FormData();
$.each($('#上载输入')[0]。文件,函数(i,文件){
data.append('file-'+i,file);
});
$.ajax({
网址:'http://localhost:3000/newFlavour',
数据:数据,
cache:false,
contentType:false,
processData:false,
方法:“POST”,
对于jQuery<1.9,键入:'POST',//
成功:功能(数据){
警报(数据);
}
});
我没有收到错误,或者你收到了。。你默默地忽略了我能看到的两个地方的任何错误,。。一个在fs.rename
上,另一个在表单.parse上,。。对错误处理进行排序,它可能会为您提供问题的线索。感谢您的评论,我将该行移到顶部。然而什么也没有发生。如果控制台在functions.js的第6行记录我的formdata,这就是输出:formdata{}。我觉得有点不对劲there@Stanos,我已经实现了上面的代码,但是我仍然在devtools的network选项卡中收到一个失败的请求响应,对此我应该做些什么?非常感谢……非常有效