• nodejs的Multer包的使用


    Node.js 是一个非常流行的 JavaScript 运行环境,它可以在服务器端运行 JavaScript 代码。在开发 Web 应用程序时,文件上传是一个非常常见的需求。Multer 是一个 Node.js 的中间件,用于处理文件上传。在本文中,我们将详细讲解 Multer 的使用和 API。

    Multer 是什么?

    Multer 是一个 Node.js 的中间件,用于处理文件上传。它基于 busboy 构建,可以处理 multipart/form-data 格式的数据,例如上传文件。Multer 可以将上传的文件保存到磁盘上,也可以将其保存到内存中,还可以将其保存到云存储中。

    安装 Multer

    要使用 Multer,首先需要在项目中安装它。可以通过 npm 安装 Multer,命令如下:

    npm install multer
    
    • 1

    Multer 的 API

    Multer 的 API 非常简单。Multer 模块只有一个函数,该函数返回一个中间件,用于处理文件上传。该函数的语法如下:

    multer([options])
    
    • 1

    其中,options 是一个可选的对象,可以包含以下属性:

    • dest:上传文件的目标目录。
    • limits:限制上传文件的大小。
    • fileFilter:定义哪些文件可以上传。

    返回的中间件有两个方法:

    • single(fieldname):处理单个文件上传。
    • array(fieldname[, maxCount]):处理多个文件上传。
    • fields(fields):处理多个文件上传,每个文件可以有不同的属性。
    • any():处理任何类型的文件上传。

    这些方法返回一个函数,该函数可以用作 Express.js 的中间件,用于处理文件上传。

    Multer 的使用案例

    下面是一个使用 Multer 的示例代码,用于处理单个文件上传:

    const express = require('express');
    const multer = require('multer');
    const app = express();
    
    const storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, 'uploads/')
      },
      filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now())
      }
    })
    
    const upload = multer({ storage: storage })
    
    app.post('/upload', upload.single('image'), function (req, res, next) {
      // req.file 是 `image` 文件的信息
      // req.body 将包含文本域中的其他表单数据
    })
    
    app.listen(3000, function () {
      console.log('Server listening on port 3000');
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    上面的代码将上传的文件保存到 uploads 目录中。在上传文件后,可以通过 req.file 对象访问上传的文件的信息。

    下面是一个处理多个文件上传的示例代码:

    const express = require('express');
    const multer = require('multer');
    const app = express();
    
    const storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, 'uploads/')
      },
      filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now())
      }
    })
    
    const upload = multer({ storage: storage })
    
    app.post('/upload', upload.array('images', 3), function (req, res, next) {
      // req.files 是 `images` 文件数组的信息
      // req.body 将包含文本域中的其他表单数据
    })
    
    app.listen(3000, function () {
      console.log('Server listening on port 3000');
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    上面的代码将上传的文件保存到 uploads 目录中,并且最多可以上传三个文件。在上传文件后,可以通过 req.files 对象访问上传的文件的信息。

    Multer 的总结

    Multer 是一个非常有用的 Node.js 中间件,用于处理文件上传。它可以将上传的文件保存到磁盘上,也可以将其保存到内存中,还可以将其保存到云存储中。Multer 的 API 非常简单,只有一个函数和几个方法。在使用 Multer 时,需要注意安装它,并正确配置选项和中间件。

  • 相关阅读:
    单元测试详解
    突破万字长文输出瓶颈!清华大学开源 LongWriter-6k 数据集;7 个 CCF A 类顶会即将截稿
    Python 二分查找
    数据传输功能单元——DID参数定义
    Python生成随机数字/字符
    实验9(交换综合实验)
    负载均衡架构设计技巧
    Python读取PDF文字 去掉页眉页脚
    关于 SAP ABAP CL_HTTP_CLIENT API 中的 SSL_ID 参数
    Kubernetes 的 crictl 和 ctr 管理命令
  • 原文地址:https://blog.csdn.net/weiyi47/article/details/134089580