返回

轻松上手,一步步教你玩转文件上传,全新Express + Multer组合

前端

Express 和 Multer:文件上传领域的珠联璧合

在 Web 开发的浩瀚海洋中,文件上传是不可或缺的一环。当涉及到文件上传时,Express 和 Multer 两大重量级组件强强联手,共同打造出无与伦比的解决方案。

Express:后端开发的基石

Express 是一个轻量级、基于 Node.js 的框架,因其简单性和灵活性而备受开发者的青睐。它就像一块基石,为您的 Web 应用程序提供坚实的基础,让您在代码的汪洋中尽情驰骋。

Multer:文件上传的利刃

Multer 是一个专门针对 Node.js 的文件上传中间件,就像一把锋利的宝剑,让文件上传变得轻松写意。它不仅能够处理单文件上传,还支持多文件上传,让您轻松驾驭各种上传场景。

联手出击:Express + Multer

将 Express 和 Multer 组合使用,如同在美食中加入各种香料,让您的文件上传体验更上一层楼。

单文件上传

const express = require('express');
const multer = require('multer');

const app = express();
const storage = multer.diskStorage({
  destination: './uploads/',
  filename: (req, file, cb) => {
    cb(null, Date.now() + '-' + file.originalname);
  }
});

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

app.post('/single-upload', upload.single('file'), (req, res) => {
  res.send('File uploaded successfully');
});

多文件上传

const express = require('express');
const multer = require('multer');

const app = express();
const storage = multer.diskStorage({
  destination: './uploads/',
  filename: (req, file, cb) => {
    cb(null, Date.now() + '-' + file.originalname);
  }
});

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

app.post('/multi-upload', upload.array('files', 10), (req, res) => {
  res.send('Files uploaded successfully');
});

常见问题解答

  • 如何限制文件大小?
const upload = multer({ storage: storage, limits: { fileSize: 1000000 } });
  • 如何限制允许的文件类型?
const upload = multer({ storage: storage, fileFilter: (req, file, cb) => {
  if (file.mimetype === 'image/jpeg' || file.mimetype === 'image/png') {
    cb(null, true);
  } else {
    cb(null, false);
  }
} });
  • 如何将上传的文件保存到数据库中?
const upload = multer({ storage: storage });

app.post('/upload-to-db', upload.single('file'), (req, res) => {
  const file = req.file;
  // 保存文件到数据库...
});
  • 如何生成自定义文件名?
const upload = multer({ storage: storage, filename: (req, file, cb) => {
  // 根据需要生成自定义文件名
  cb(null, 'custom-filename.jpg');
} });
  • 如何启用多部分表单数据上传?
app.use(express.urlencoded({ extended: true }));

结语

Express 和 Multer 的强强联合,为文件上传领域带来了革命性的解决方案。无论您是开发新手还是经验丰富的代码老手,Express + Multer 组合都将助您轻松驾驭文件上传的复杂世界,让您的 Web 应用程序更上一层楼。