图片上传失败w / nodejsexpression

我试图上传一个图像使用节点w / express,我得到以下错误。 我在这里看到了一些关于asynchronous数据库调用的问题。 我想使用bodyParser理论上,bodyParser应该只是通过我连接,然后强大,所以我宁愿解决scheme,不禁用bodyParser。

在我的情况下,我没有进行数据库调用 – 我的代码被复制到下面。 任何人都可以摆脱这个任何光将不胜感激。

500错误:parsing器错误,在IncomingMessage中IncomingForm.write(/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:145:17)处分析的44个字节中有40个字节。 (/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:95:12),在HTTPParser.onBody的IncomingMessage.emit(events.js:64:17)在socket._onReadable(net.js:683:27)在Socket.ondata(http.js:1026:22)在IOWatcher.onReadable [ascallback](net.js:177:10) )

这是我的app.js文件(咖啡脚本):

express = require('express') routes = require('./routes') app = module.exports = express.createServer() app.configure(() -> app.set('views', __dirname + '/views') app.set('view engine', 'jade') app.use(express.bodyParser({ uploadDir: '/tmp/upload' })) app.use(express.methodOverride()) app.use(express.cookieParser()) app.use(app.router) app.use(express.static(__dirname + '/public')) ) app.configure('development', () -> app.use(express.logger()) app.use(express.errorHandler({ dumpExceptions: true, showStack: true })) ) app.configure('test', () -> app.use(express.logger()) app.use(express.errorHandler({ dumpExceptions: true, showStack: true })) ) app.configure('production', () -> app.use(express.logger()) app.use(express.errorHandler()) ) app.get('/images/new', (req, res) -> console.log("getting image form") res.render('forms/image_upload', {title: 'Images'}) ) app.post('/images', (req, res) -> console.log("post run") res.send('uploaded') ) app.listen(3000, () -> console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env) ) 

这是我的forms部分(玉):

 form#new-images(action="/images", enctype="multipart/form-data", method="post" ) input#image-url(placeholder="Enter image url", type="text") input#image-files(type="file", multiple="multiple") input#submit(type="submit", value="Upload") 

这是我的包(npm ls)

 ├─┬ connect-form@0.2.1 │ └── formidable@1.0.11 ├─┬ connect-mongodb@1.1.4 │ ├─┬ connect@1.8.5 │ │ ├── formidable@1.0.11 │ │ ├── mime@1.2.5 │ │ └── qs@0.5.0 │ └─┬ mongodb@1.0.2 │ └── bson@0.0.6 ├─┬ express@2.5.9 │ ├─┬ connect@1.8.7 │ │ └── formidable@1.0.11 │ ├── mime@1.2.4 │ ├── mkdirp@0.3.0 │ └── qs@0.4.2 ├── expresso@0.9.2 ├── formidable@1.0.11 ├─┬ jade@0.26.1 │ ├── commander@0.5.2 │ └── mkdirp@0.3.0 ├── knox@0.0.9 ├── less@1.3.0 ├─┬ mongoose@2.6.5 │ ├── hooks@0.2.1 │ └─┬ mongodb@1.0.2 │ └── bson@0.0.6 ├─┬ multipart@0.1.5 │ └── mime@1.2.6 ├─┬ session-mongoose@0.0.2 │ ├─┬ connect@1.8.7 │ │ ├── formidable@1.0.11 │ │ ├── mime@1.2.5 │ │ └── qs@0.5.0 │ └── mongeese@0.0.1 ├─┬ socket.io@0.9.6 │ ├── policyfile@0.0.4 │ ├── redis@0.6.7 │ └─┬ socket.io-client@0.9.6 │ ├─┬ active-x-obfuscator@0.0.1 │ │ └── zeparser@0.0.5 │ ├── uglify-js@1.2.5 │ ├─┬ ws@0.4.19 │ │ ├── commander@0.5.2 │ │ ├── options@0.0.3 │ │ └── tinycolor@0.0.1 │ └── xmlhttprequest@1.2.2 └── sys@0.0.1 

我遇到过这个确切的问题。 尝试为每个input标签添加一个“名称”值。 那为我做了诡计。

在Express github帐户上有一个例子:

https://github.com/visionmedia/express/blob/master/examples/multipart/app.js

你尝试过吗?

更新:

另外,这个SO问题可能会有所帮助: 使用Node.js,Express和Mongoose上传图像