文件上传
利用multer
1.安装multer
npm install multer -S
2.配置multer
const multer = require('multer');
//文件上传的基础配置:temp是临时文件夹、my_photo是字段名、5表示最大上传5个文件
app.use(multer({dest:'temp'}).array('my_photo',5));
3.代码执行
router.post('/upload',function(req,res){
//通过req.files获取所有文件
for(let i=0;i<req.files.length;i++){
let file = req.files[i];
//file.originalname 文件的原生名称
console.log(file,file.originalname);
//生成一个新文件名
var time = Date.now();
var random = parseInt(Math.random() * 10000);
var extname = path.extname(file.originalname);
var filename = time+random+extname;
//拼接最终的图片路径,由于当前文件在routes文件夹下,所以用 .. 跳出当前目录
let p = path.resolve(__dirname,'..','public','images',filename);
//通过file.path读取原始文件数据
let data = fs.readFileSync(file.path);
//写入文件
fs.writeFile(p,data,function(err){
if(err){
console.log("文件上传失败:",err);
res.send("upload error");
return;
}
res.send("upload success");
})
}
})
4.利用postman测试
5.最终会在公共的public文件下的images中加入当前文件
由以下代码实现文件的路径
//拼接最终的图片路径,由于当前文件在routes文件夹下,所以用 .. 跳出当前目录
let p = path.resolve(__dirname,'..','public','images',filename);
//路径匹配