Nodejs express 4.9.8 express.bodyParser上传图片指定目录咋写
Nodejs express 4.9.8 express.bodyParser上传图片指定目录咋写
以前的写法是 app.use(express.bodyParser({uploadDir:’./uploads’})); 现在的写法是什么? express版本 4.9.8
== 已解决
Express 3 里的express.bodyParser 相当于 Express 4的body-parser + multer 所以需要multer模块 使用方法是 var multer = require(‘multer’); app.use(multer({dest: “./public/images”})) 就可以了
参考: http://expressjs.com/guide/migrating-4.html https://github.com/expressjs/multer?_ga=1.196729060.97302304.1413945723 感谢下面二位
Nodejs express 4.9.8 express.bodyParser上传图片指定目录咋写
以前的写法是 app.use(express.bodyParser({uploadDir:’./uploads’}));
。但是从 Express 4 开始,express.bodyParser
已经被移除,取而代之的是需要使用 body-parser
和 multer
模块来处理文件上传。
解决方案
为了在 Express 4 中实现文件上传到指定目录的功能,你需要使用 multer
模块。以下是具体的步骤和代码示例:
-
安装依赖
首先,确保你已经安装了
multer
模块。如果没有安装,可以使用 npm 进行安装:npm install multer --save
-
配置 Multer
接下来,在你的 Express 应用中配置
multer
。以下是一个简单的示例:const express = require('express'); const multer = require('multer'); // 创建一个 Express 应用实例 const app = express(); // 配置 multer 存储选项 const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './public/images'); // 指定保存图片的目录 }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()); // 自定义文件名 } }); // 创建 multer 实例 const upload = multer({ storage: storage }); // 设置路由处理文件上传 app.post('/upload', upload.single('image'), (req, res) => { res.send('Image uploaded successfully!'); }); // 启动服务器 app.listen(3000, () => { console.log('Server is running on port 3000'); });
代码解释
-
Multer 配置:
destination
函数指定了文件保存的目录。filename
函数定义了文件的命名规则,这里使用时间戳来避免文件名冲突。
-
路由处理:
app.post('/upload', upload.single('image'), ...)
表示处理 POST 请求到/upload
路径,并且只处理单个文件,字段名为image
。
-
启动服务器:
app.listen(3000, ...)
启动服务器并监听 3000 端口。
通过以上步骤,你可以成功地将图片上传到指定目录。更多关于 multer
的详细信息可以参考其官方文档:Multer GitHub。
用第三方库吧,推荐formidable
form = new formidable.IncomingForm()
form.encoding = 'utf-8'
form.uploadDir = path.join settings.root, 'upload_tmp'
form.keepExtensions = true
form.maxFieldsSize = 2 * 1024 * 1024
form.keepAlive = true
postFrom = ""
connect-multiparty 这个也可以
cnode 用的是 busboy,别人挑的…
别折腾了,express 4 官方推荐用https://github.com/expressjs/multer
它的底层也是busboy
非常简单
赞 , 帮到忙了
对于 Express 4.9.8 版本,express.bodyParser
已不再使用。取而代之的是使用 multer
来处理文件上传。
以下是具体的实现步骤:
-
首先安装
multer
模块:npm install multer --save
-
然后,在你的应用中设置
multer
中间件来指定上传图片的目标目录:
const express = require('express');
const multer = require('multer');
const app = express();
// 设置 Multer 存储配置
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads'); // 指定保存上传文件的目录
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now()); // 为上传文件生成一个唯一的文件名
}
});
const upload = multer({ storage: storage });
// 使用 Multer 中间件处理文件上传
app.post('/upload', upload.single('image'), (req, res) => {
// req.file 是单个文件的信息
// req.body 将包含文本字段
res.send('File uploaded successfully.');
});
app.listen(3000, () => console.log('Server started on port 3000'));
以上代码展示了如何设置 multer
来处理文件上传,并将文件保存到 ./uploads
目录下。注意这里我们使用了 upload.single('image')
方法,它假设表单中的文件输入字段名为 image
。如果你需要处理多个文件,则可以使用 upload.array('images', numberOfFiles)
或者根据具体需求选择其他方法。
通过这种方式,你可以轻松地处理文件上传并在指定目录中保存文件。