npm 包 multer-storage-gridfs 使用教程

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


猜你喜欢

  • npm 包 react-ghub-summary 使用教程

    概述 React-ghub-summary 是一个 npm 包,用于显示 github 仓库的概要信息。它提供了一个 React 组件,你可以在你的 React 项目中轻松使用它。

    3 年前
  • npm 包 react-svg-animation 使用教程

    介绍 React 是目前最广泛使用的前端框架之一,而 SVG(Scalable Vector Graphics) 则被用于矢量图形的绘制。react-svg-animation 是一个基于 React...

    3 年前
  • npm 包 gammu-sms-menu 使用教程

    简介 npm 是 Node.js 的包管理工具,通过 npm 可以方便地下载和安装各种库和工具。而 gammu-sms-menu 是一个用于发送和接收 SMS 的 npm 包。

    3 年前
  • npm 包 `emberx-select-modded` 使用教程

    在前端开发中,我们经常需要使用下拉框来让用户进行选择。而 emberx-select-modded 是一个可以自定义的下拉框组件,它可以非常方便地集成到 Ember.js 应用程序中。

    3 年前
  • npm 包 parse-dashboard-hasco 使用教程

    简介 parse-dashboard-hasco 是一个用于管理和监控 Parse Server 应用程序的可扩展仪表板。该仪表板是为 Parse Server 开发人员和管理员设计的,使他们能够轻松...

    3 年前
  • npm 包 clone-style 使用教程

    在前端开发中,样式往往是一个非常重要的部分。而在使用样式时,我们通常需要克隆已有的样式,以便更好地复用它们。这时候我们就可以使用 npm 包 clone-style 来实现样式的克隆。

    3 年前
  • npm 包 race-first-resolved 使用教程

    在前端开发过程中,经常会遇到并行请求的情况。通常来说如果我们需要多次异步请求,我们会让它们全部运行,并在所有请求都发出后等待所有请求响应后再进行下一步操作。 但是这样在某些情况下可能会话费大量时间,为...

    3 年前
  • npm包react-swipe-card使用教程

    在前端开发中,交互和界面设计十分重要。如果你正在开发一个 dating app 或者一个 ecommerce website,使用 swiping 的交互方式能带来优异的用户体验。

    3 年前
  • npm 包 ournet.data.horoscope 使用教程

    在前端开发中,有一些常用的工具可以使开发更加高效。其中一个工具就是 npm(Node Package Manager)。借助 npm,我们可以很容易地管理各种依赖包并下载它们。

    3 年前
  • npm 包 redux-form-react-submitbutton 使用教程

    在使用 React 进行前端开发时,表单是一个必不可少的组件。而 Redux 提供的状态管理能力,也极大地方便了表单的数据管理。而 redux-form-react-submitbutton 则为表单...

    3 年前
  • npm 包 vue-github-card 使用教程

    简介 vue-github-card 是一款基于 Vue.js 的 npm 包,用于在网页上展示 Github 用户的个人信息。它可以展示用户的头像、用户名、所属组织、粉丝数、仓库数等信息,同时还可以...

    3 年前
  • npm 包 create-game 使用教程

    介绍 create-game 是一个便捷的 npm 包,它提供了快速创建基于 canvas 的游戏的工具。使用 create-game,你可以很容易地开始开发自己的游戏并且进行扩展。

    3 年前
  • npm 包 cubesat-db 使用教程

    cubesat-db 是一个面向前端开发者的 npm 包, 它提供了一种简单的方法来在前端部署一个轻量级的数据库。本文将详细介绍如何使用这个包及其 API,并提供一些示例代码以及一些学习和指导意义。

    3 年前
  • npm 包 express-react-kickstart 使用教程

    前言 随着前端技术的飞速发展,越来越多的开发者开始尝试使用 React.js 来开发 Web 应用程序。为了更好地维护和管理这些应用程序,我们需要依赖一些生态工具和框架。npm 包就是其中之一。

    3 年前
  • npm包 grunt-angular-file-sort 使用教程

    如果您是一名前端开发者,并且使用 AngularJS 开发,那么您一定知道管理 AngularJS 项目的 JavaScript 文件和 HTML 模板文件的困难。

    3 年前
  • npm 包 flow-scripts 使用教程

    在前端开发中,为了提高代码的可读性、可维护性和稳定性,我们通常会使用静态类型检查工具来进行代码质量的保证。而目前比较流行的静态类型检查工具之一就是 Flow。 Flow 是 Facebook 出品的一...

    3 年前
  • npm包ngx-slick-with-init使用教程

    什么是ngx-slick-with-init? ngx-slick-with-init是一个基于Angular框架的轮播插件,使用这个插件可以让开发者简单的在Angular应用中创建轮播组件。

    3 年前
  • npm 包 recink-unit 使用教程

    在前端开发中,我们经常会遇到一些需要测试代码质量和可靠性的情况,这时候测试是必不可少的一项工作。而 recink-unit 是一个非常好用的测试工具,它能够帮助我们进行单元测试,保证我们的代码的可靠性...

    3 年前
  • npm 包 recink-coverage 使用教程

    在前端开发中,代码的测试和覆盖率检测一直是一个重要的话题。如何快速且准确地检测出代码中的问题,提高代码的质量和稳定性呢?这时候,我们就需要借助一些工具来帮助我们完成这项任务。

    3 年前
  • npm 包 tm-perfomance-check 使用教程

    前言 在进行前端开发时,优化性能是非常重要的一项任务。为了更快地找到项目中的性能问题,并及时解决,我们需要使用一些工具。而 npm 包 tm-perfomance-check 就是其中一种非常优秀的工...

    3 年前

相关推荐

    暂无文章