图像上传失败 w/nodejs express

Posted

技术标签:

【中文标题】图像上传失败 w/nodejs express【英文标题】:Image upload fails w/ nodejs express 【发布时间】:2012-07-17 17:53:20 【问题描述】:

我正在尝试使用带 express 的 Node 上传图像,但出现以下错误。我已经看到了一些关于此问题的问题,这些问题指向异步数据库调用是问题的原因。我想在理论上使用 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) 在传入消息。 (/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) 在 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 

【问题讨论】:

【参考方案1】:

我以前遇到过这个确切的问题。尝试为每个输入标签添加一个“名称”值。这对我有用。

【讨论】:

以上是关于图像上传失败 w/nodejs express的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 将图像上传到 PHP 失败

在 Android 中将图像上传到 Cloudinary 失败

上传 JPG 图像以解析服务器失败

如何修复“文件上传失败。”使用任何图像上传验证时出错 - Laravel 5.7

网络请求失败对 https 图像上传 Android 做出本机反应

通过 android 应用程序共享图像时 Facebook 上传失败错误