我正在node.js中编写一个文件up-loader,我已经按照文档进行了操作,在处理我的mac时,文件有时会上传。在我的Windows PC文件根本不会上传。
我正在使用快速框架,应用程序托管在外部服务器上。尝试上传时出现的错误是:
Error: unintialized parser
at IncomingForm.write (/srv/node/test-app/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:130:17)
at IncomingMessage.<anonymous> (/srv/node/test-app/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:87:12)
at IncomingMessage.EventEmitter.emit (events.js:95:17)
at IncomingMessage.<anonymous> (_stream_readable.js:720:14)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at emitDataEvents (_stream_readable.js:745:10)
at IncomingMessage.Readable.on (_stream_readable.js:666:5)
at IncomingForm.parse (/srv/node/test-app/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:86:6)
at /srv/node/frog-jam/node_modules/express/node_modules/connect/lib/middleware/multipart.js:125:12
at noop (/srv/node/frog-jam/node_modules/express/node_modules/connect/lib/middleware/multipart.js:22:3)
我通过表单发布图像,在服务器端我有这个代码处理文件上传:
fs.rename(req.files.image.path
, '/path/to/new/folder/' + req.files.image.name
, function(err) {
if(err) return res.json(err);
return res.json({message:'Upload complete'});
}
);
我在此方法中添加了控制台日志,但似乎没有进入控制器方法。我自己没有任何中间件来处理文件上传,而且这条路线上没有更多的中间件。
所有上传目的地也是正确的,因为它偶尔会在我的Mac书上工作。
答案 0 :(得分:4)
您可能已将Node.js更新为最新版本之一(&gt; 0.10.5)。 Express.js在其依赖项中具有旧版本的connect,而该依赖项依次具有旧版本的formidable(插件负责文件上载)。要解决此问题:
$ cd <project_root>/node_modules/express/node_modules/connect
$ npm install formidable@latest
之后你应该很好