开发的时候图片上传是web开发中经常用到的一个功能,node对于这方面也有了相对完善的支持。经常用到的开源组件有 multer 、formidable 等,借助这两个开源组件,可以轻松搞定node 图片上传, 本文讲解的是利用multer 实现单文件 和 多文件上传的功能。
单文件上传
//调用模块
var express = require('express');
var multer = require("multer");
var appAdmin = express();
var path = require('path')
// 使用硬盘存储模式设置存放接收到的文件的路径以及文件名
var storage = multer.diskStorage({
destination: function (req, file, cb) {
console.log(__dirname)
// 接收到文件后输出的保存路径(若不存在则需要创建)
cb(null, '../../images');
},
filename: function (req, file, cb) {
// 将保存文件名设置为 时间戳 + 文件原始名,比如 151342376785-123.jpg
cb(null, `${Date.now()}-${file.originalname}`)
}
})
var upload = multer({
storage: storage
});
// 文件上传请求处理,upload.array 支持多文件上传,第二个参数是上传文件数目
appAdmin.post('/uploadimg', upload.single('file'), function (req, res) {
// 读取上传的图片信息
var files = req.file;
// 设置返回结果
// console.log(files)
var result = {};
if (!files.path) {
result.code = 1;
result.msg = '上传失败';
errs(res)
} else {
result.code = 0;
result.data = files
result.msg = '上传成功';
result.location = 'http://www.xiangjv.top/'+files.filename
suces(res, result, 'imgUpload')
}
});
diskStorage就是自定义 储存文件的信息也可以如下
var upload = multer({ dest: 'upload/' });
单文件上传的时候 upload.single('file') 的 'file' 是 input框的name属性
<input type="submit" value="上传文件" name="file">
多图上传
// 多图上传
app.post('/uploadimg', upload.array('file', 2), function(req, res, next){
res.send({ret_code: '0'});
});
注意:多文件上传的时候 req.file 返回的不再是对象 而是数组
标签: nodeJsfront服务器serve