文件上传(后端部分)

144 阅读1分钟

文件上传

利用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测试

20220222172910.png 5.最终会在公共的public文件下的images中加入当前文件

由以下代码实现文件的路径

   //拼接最终的图片路径,由于当前文件在routes文件夹下,所以用 .. 跳出当前目录
    let p = path.resolve(__dirname,'..','public','images',filename);
    //路径匹配