私はnode.jsでファイルアップローダーを書いています。ドキュメントに従っており、Macで作業しているときにファイルが時々アップロードされています。私の Windows PC では、ファイルがまったくアップロードされません。
Express フレームワークを使用しており、アプリは外部サーバーでホストされています。アップロードしようとしているときに表示されるエラーは次のとおりです。
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ブックでも時々動作するので、すべてのアップロード先も正しいです。