返回

摸清套路话,让文件轻松实现多方式上传!

前端

Node.js multer文件上传详解——如何让上传更顺手?

背景介绍

文件上传是 Web 开发中常见的需求,用户经常需要将文件上传到服务器。Node.js 是一个流行的 Web 开发框架,Multer 是一个 Express.js 中间件,可以用来处理多种文件上传。

配置 Multer

在使用 Multer 之前,需要先安装它。可以使用以下命令安装 Multer:

npm install multer

安装完成后,就可以在代码中引入 Multer。

const multer = require('multer');

接下来,就可以配置 Multer。Multer 提供了多种配置选项,可以根据需要进行配置。

处理文件上传请求

配置好 Multer 后,就可以开始处理文件上传请求了。Multer 提供了一个名为 multer.single() 的方法来处理单个文件上传请求,还提供了一个名为 multer.array() 的方法来处理多个文件上传请求。

const storage = multer.diskStorage({
  destination: './uploads/',
  filename: function (req, file, cb) {
    cb(null, file.originalname);
  }
});

const upload = multer({ storage: storage });

app.post('/upload', upload.single('file'), (req, res, next) => {
  res.json({
    success: true,
    file: req.file
  });
});

获取上传的文件

文件上传完成后,可以使用 req.filereq.files 来获取上传的文件。

app.post('/upload', upload.single('file'), (req, res, next) => {
  const file = req.file;
  console.log(file);
  res.json({
    success: true,
    file: file
  });
});

处理上传的文件

获取上传的文件后,就可以对文件进行处理了。例如,可以将文件保存到数据库中,或者将文件发送给其他服务。

app.post('/upload', upload.single('file'), (req, res, next) => {
  const file = req.file;
  fs.readFile(file.path, (err, data) => {
    if (err) {
      return next(err);
    }
    // 将文件保存到数据库中
    const sql = 'INSERT INTO files (name, data) VALUES (?, ?)';
    db.query(sql, [file.originalname, data], (err, result) => {
      if (err) {
        return next(err);
      }
      // 将文件发送给其他服务
      request.post('http://localhost:3000/files', {
        file: file.originalname,
        data: data
      }, (err, res, body) => {
        if (err) {
          return next(err);
        }
        res.json({
          success: true,
          file: file
        });
      });
    });
  });
});

总结

Multer 是一个非常强大的文件上传中间件,可以用来处理多种文件上传。本文详细讲解了如何使用 Multer 实现文件上传,包括如何配置 Multer、如何使用 Multer 处理文件上传请求、如何获取上传的文件以及如何处理上传的文件。