我正在用node.js编写一个文件上传程序,我遵循了文档,在我的mac上工作的时候,文件有时会被上传。在我的windows电脑上,文件根本不会上传。
我使用的是express框架,应用程序托管在外部服务器上。im在尝试上传时遇到的错误是:
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笔记本上工作。
发布于 2013-05-20 15:20:02
您可能已经将Node.js更新到最新版本之一(> 0.10.5 )。Express.js的依赖项中有旧版本的connect,而后者又有旧版本的formidable (负责文件上传的插件)。要解决此问题,请执行以下操作:
$ cd <project_root>/node_modules/express/node_modules/connect
$ npm install formidable@latest在那之后你应该会变得很好
https://stackoverflow.com/questions/16528964
复制相似问题