📌  相关文章
📜  multer 保存带有扩展名的文件 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:44.980000             🧑  作者: Mango

使用 Multer 保存带有扩展名的文件

Multer 是一个 Node.js 的 middleware,可以让我们轻松地处理 HTTP 请求中的多部分数据。在本文中,我们将学习如何使用 Multer 保存带有扩展名的文件。

Multer 可以处理不同类型的数据,包括文本、JSON、图像、视频等。要使用 Multer 保存带有扩展名的文件,我们需要安装 Multer 并设置存储引擎。

安装 Multer

要安装 Multer,可以使用 npm 命令行工具。

npm install multer
设置存储引擎

在使用 Multer 之前,我们需要设置存储引擎。存储引擎决定了上传的文件的存储位置以及文件命名规则等。Multer 支持多种存储引擎,包括磁盘存储引擎、内存存储引擎、亚马逊 S3 存储引擎等。

例如,以下代码将使用磁盘存储引擎将文件保存在本地磁盘上:

const multer = require('multer');

// Set storage engine
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './uploads/');
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now() + '.' + file.originalname.split('.').pop());
  }
});

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

在上面的代码中,我们在磁盘上创建了一个名为 uploads 的文件夹。存储引擎的 destination() 函数指定了文件的存储路径,而 filename() 函数用于生成唯一的文件名。在此示例中,我们将使用原始文件名的扩展名创建新的文件名。

处理文件上传请求

要处理文件上传请求,我们可以使用 Multer 中间件的 single() 或 array() 方法。使用 single() 方法处理单个文件上传请求,而 array() 方法用于处理多个文件上传请求。

例如,以下代码将处理一个名为 file 的文件上传请求:

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

// Set storage engine
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './uploads/');
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now() + '.' + file.originalname.split('.').pop());
  }
});

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

// Handle file upload request
app.post('/upload', upload.single('file'), function (req, res) {
  res.json({
    message: 'File uploaded successfully'
  });
});

// Start server
app.listen(3000, function () {
  console.log('Server started on port 3000');
});

在上面的代码中,我们使用 single() 方法处理单个文件上传请求。upload.single() 方法接受一个名为 file 的参数,这是我们用于上传文件的 input 元素的 name 属性。在这个例子中,我们只处理一个文件上传请求,因此使用 single() 方法。

当客户端发送一个名为 file 的 HTTP POST 请求时,我们使用 upload.single() 方法处理该请求。在处理完该请求后,我们将响应一个包含消息 File uploaded successfully 的 JSON 对象。

结论

Multer 是 Node.js 用于处理 HTTP 请求中的多部分数据的中间件。它可以轻松地处理文本、JSON、图像、视频等不同类型的数据。在本文中,我们学习了如何使用 Multer 保存带有扩展名的文件。我们看到了如何设置存储引擎,并使用 Multer 中间件的 single() 或 array() 方法处理文件上传请求。