npm 包 multer-storage-gridfs 使用教程

阅读时长 6 分钟读完

图片是现代网站开发中不可或缺的一部分。然而,传统的文件存储方式不能快速地从服务器端加载和传送图片。解决方法是将图片直接存储在云端,例如 Amazon S3 和 Google Cloud Storage。

在这篇文章中,我们将探讨如何使用 multer-storage-gridfs npm 包,将上传到 Node.js 服务器的图片存储在 MongoDB 中。

准备

  • Node.js
  • MongoDB
  • Multer
  • Multer-gridfs-storage
  • Mongoose

安装

Node.js 项目目录中使用 npm 安装 multer-storage-gridfs

使用方法

使用 multer-storage-gridfs,首先需要创建一个新的 GridFsStorage 实例:

-- -------------------- ---- -------
----- ------------- - ---------------------------------

----- ------- - --- ---------------
  ---- ----------------------------------
  ----- ----- ----- -- -
    ------ -
      --------- ------------------
      ----------- ---------
    --
  -
---

可以通过一些可选的配置参数组合更改默认设置,这些设置分别是:

-- -------------------- ---- -------
----- ------- - --- ---------------
  ---- ----------------------------------
  -------- -
    ---------------- -----
    ------------------- ----
  --
  ----- ----- ----- -- -
    ----- ----- - ------------- --------------

    -- ----------------------------- --- --- -
      ----- -------- - ----------------------------------------------
      ------ ---------
    -

    ------ -
      ----------- ---------
      --------- ---------------------------------------------
    --
  -
---

在这里,我们添加了一些新的配置项:

  • options - 传递给 MongoDB 的参数
  • file - 函数返回一个包含 filenamebucketName 的对象。如果 mimetype 不是 'image/png''image/jpeg',返回一个新的文件名。

接下来,将 storage 对象传递给 Multerupload 方法:

最后,使用 upload 中间件在任何路由上启用文件上传:

完整示例

-- -------------------- ---- -------
----- ------- - -------------------
----- -------- - --------------------
----- ---- - -------------------------
----- ------------- - ---------------------------------
----- ---------- - -----------------------
----- ------ - ------------------

----- --- - ----------
---------------------------
------------------------------- --------- ---- ----

----- ----- - ----------------------------------

-- -- ------- ---
----------------------- - ---------------- ----- ------------------- ---- ---

--- ---- - --------------------

--- --- - -----

----------------- -- -- -
  -- --- ------ --
  --- - ------------- ----------------
  --------------------------
---

----- ------- - --- ---------------
  ---- ------
  ----- ----- ----- -- -
    ------ -
      --------- ------------------
      ----------- ---------
    --
  -
---

----- ------ - -------- ------- ---

------------------- ---------------------- ----- ---- -- -
  -------------------------- -------- ---------------
---

-------------------------- ----- ---- -- -
  ------------------- --------- ------------------- -- ----- ----- -- -
    -- ------ -- ----------- --- -- -
      ------ ----------------------
        ---- --- ----- ------
      ---
    -

    ----- ---------- - ------------------------------------
    ---------------------
  ---
---

----- ---- - ---------------- -- -----

---------------- -- -- -
  ---------------------- -- ---- ----------
---

在上述完整示例中,我们可以使用 /upload 端点上传文件,使用 /file/:filename 端点获取已上传的文件。

总结

通过使用 multer-storage-gridfs,我们可以将上传到 Node.js 服务器的文件存储到 MongoDB 中。在这篇文章中,我们介绍了如何通过使用 GridFsStorageMulter 中间件上传和下载文件。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005725c81e8991b448e8875

纠错
反馈