使用req.files上传文件不能使用express 4.x.

时间:2014-06-04 10:53:05

标签: node.js file-upload express

我的文件上传应用程序与快递3.x一起运行良好,但在将快递模块升级到4.x之后,它已经不再适用了。搜索之后,我知道原因,因为用于处理multipart / form-data的中间件请求正文数据从bodyParser中间件中删除。然后我尝试安装 multer ,但无法安装它,出现以下错误: 错误的ERR!错误:未找到兼容版本:busboy @' ^ 0.2.6' 错误的ERR!有效的安装目标:

那么我的申请下一步该怎么办,我真的想使用快递4.x,有人帮我吗? 谢谢。

2 个答案:

答案 0 :(得分:3)

您需要使用body-parser中间件和multer,因为它们不再与快递捆绑在一起。

var express    = require('express')
var bodyParser = require('body-parser')
var multer     = require('multer')

var app = express()

app.use(bodyParser()) //Formerly app.use(express.bodyParser())
app.use(multer({ dest: './uploads/'})) //Formerly app.use(express.multipart())

答案 1 :(得分:0)

插入符号(^)表示您要安装与(在这种情况下) 0.2.6 兼容的Busboy版本。

npm用于比较版本(semver)的软件包在版本2.1.0中添加了对此的支持。 npm使用自版本1.3.7以来的版本。

当你告诉它安装' ^ 0.2.6'时,你的npm版本不知道该怎么做。它被插入符号弄糊涂了。

根据您的评论,您正在运行比此更早的npm安装(1.3.5)。

解决方案是更新npm。您的节点安装本身也可能已过时,因为新版本的npm通常与节点捆绑在一起。