使用强大的节点file upload不起作用
我们希望实现一个function,将多个file upload到ExpressJS服务器,并通过ajax
调用返回所有独特的URL。
以下是我前端的示例代码:
var formData = new FormData(); for (var i = 0; i < nameId.length; i++) { if($(nameId[i])[0].files[0]){ formData.append(nameId[i], $(nameId[i])[0].files[0], $(nameId[i])[0].files[0].name); } } $.ajax({ url: '/upload-files', type: 'POST', data: formData, processData: false, contentType: false, success: function(data){ console.log('upload successful!'); console.log(data); } });
在我们的路由器中,我们有下面的代码片段来接受请求并存储文件:
router.post('/upload-files',function(req, res, next){ var form = new formidable.IncomingForm(); form.multiples = true; form.uploadDir = path.join(__dirname, '/uploads'); form.on('file', function(field, file) { console.log("File incoming"); 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() { res.end('success'); }); });
但是,在路由器中没有发生过任何事情。 请求进入路由器内部,但之后什么也没有。
这里有什么不对吗? 经过长时间的等待请求失败,我们在服务器端和客户端没有收到任何错误。
请build议。 谢谢
我能够通过添加和更新以下代码片段来解决它:
在上传请求处理function添加代码中:
form.parse(req);
并在app.js中更新了以下代码片段:
app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended:false}));
到( multipart
处理multipart
数据)
app.use(bodyParser.json()) .use(bodyParser.urlencoded());
注意由于parsing器中的更改,下列警告消息在启动服务器时即将到来:
body-parser deprecated undefined extended: provide extended option
- 为什么我可以使用绝对path而不是相对的方式将带有Formidable的file upload到文件夹?
- 当我在Node.js中上传文件时,Formidable总是返回空字段和文件
- 强大的多file upload – ENOENT,没有这样的文件或目录
- 如何使用ejs获取节点js中checkbox的值?
- 如何在node.js中使用express来更改上传path
- 使用Node.js,Async和Formidable进行error handling
- 我怎样才能访问express的uploadDir属性?
- 如何一次上传多个文件,使用强大的expression方式
- 强大的parsingcallback不被称为和没有错误