我正在尝试使用Node w / express上传图像,我收到以下错误。我在这方面看到了一些问题,指出异步数据库调用是导致问题的原因。我想在理论上使用bodyParser,bodyParser应该只是通过我连接然后强大,所以我更喜欢不禁用bodyParser的解决方案。
在我的情况下,我没有进行数据库调用 - 我的所有代码都复制在下面。任何人都可以解决这个问题的任何亮点都将非常感激。
500错误:解析器错误,在IncomingForm.write中解析了44个字节中的40个 (/Users/me/Projects/Project/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js:145:17) 在IncomingMessage。 (/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)中 (http.js:121:23)在Socket.ondata(http.js:1026:22)at IOWatcher.onReadable中的Socket._onReadable(net.js:683:27)[as 回调](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)
)
这是我的形式部分(玉):
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
答案 0 :(得分:19)
我之前遇到过这个问题。尝试为每个输入标记添加“名称”值。这对我有用。
答案 1 :(得分:0)
Express github帐户本身有一个例子:
https://github.com/visionmedia/express/blob/master/examples/multipart/app.js
你试过这个吗?
<强>更新强>
此外,这个SO问题可能有所帮助:Uploading images using Node.js, Express, and Mongoose