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 包 generator-nestjs-micro 使用教程

    generator-nestjs-micro 是一个基于 NestJS 框架的微服务脚手架生成器,可以快速创建基于微服务架构的 NestJS 服务应用,本教程将介绍如何使用该包。

    3 年前
  • npm 包 bs-bn.js 使用教程

    简介 bs-bn.js 是一个 JavaScript 库,用于进行数字计算和精度处理。它提供了一些有用的数学函数,例如加、减、乘、除等,还能解决 JavaScript 中浮点数计算不精确的问题。

    3 年前
  • npm 包 npm-list-problems 使用教程

    什么是 npm-list-problems? npm-list-problems 是一个用于检测 npm 包的依赖问题的工具,可以列出本地项目所依赖的 npm 包存在的问题,并为用户提供解决方案。

    3 年前
  • npm 包 ngx-analytics 使用教程

    简介 ngx-analytics 是一个基于 Angular 的 npm 包,用于轻松地添加来自不同分析服务的跟踪代码。它支持谷歌分析,Google Tag Manager,Adobe Analyti...

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

    介绍 在 React 中,为了方便组件的复用和管理,我们通常会使用 npm 包来将组件封装成一个区别于其他组件的独立模块进行管理。而 react-create-component 就是一个快速创建 R...

    3 年前
  • npm 包 square-and-multiply 使用教程

    简介 npm 是一个包管理工具,是前端开发必不可少的工具之一。square-and-multiply 是一个 npm 包,可以进行一些简单的数学计算,如幂运算、求模运算等。

    3 年前
  • npm 包 tamia-changelog 使用教程

    在日常的前端开发工作中,我们通常都会使用到 npm 包来进行代码的管理,而 tamia-changelog 则是一个基于 Node.js 平台的用于生成项目版本日志的 npm 包。

    3 年前
  • npm 包 squid-css 使用教程

    介绍 squid-css 是一个轻量级的 CSS 框架,它提供了许多常用的 CSS 样式和布局。总体来说,squid-css 的设计理念是简单、易于理解和使用的,适合于快速构建网页和应用程序的样式。

    3 年前
  • NPM 包 Stetho 使用教程

    在前端开发过程中,调试是一个很重要的环节。而我们使用的最多的就是浏览器开发者工具,通过工具的调试功能来定位和解决问题。但是这种方式并不总是完美的,有些问题需要更深入的了解。

    3 年前
  • npm 包 koa-compress-more 使用教程

    在前端开发中,性能优化是非常重要的方面之一。为了提高 Web 应用程序的响应速度,我们经常需要采用压缩等方式来减小文件大小,减少网络传输时间。koa-compress-more 是一个基于 Koa 框...

    3 年前
  • npm 包 younglee 使用教程

    npm 是 node.js 中包管理器,younglee 是一款能够快速生成代码机构的 npm 包。在前端开发过程中,使用 younglee 可以提高开发效率,降低前端工程师的开发难度。

    3 年前
  • npm 包 toktik-ngx-datatable 使用教程

    前言 在前端开发中,我们经常需要使用表格来展示数据。为了方便起见,我们通常使用一些成熟的组件库来快速构建表格组件。其中,toktik-ngx-datatable 是一个基于 Angular 的表格组件...

    3 年前
  • npm包geta使用教程

    在开发前端项目的过程中,可能会用到一些常用的工具包,在已有的npm仓库中搜索工具包并下载是一个常见的操作。在其中,geta是一个非常有用的工具包,用来做对象的取值操作,本篇文章将详细介绍geta的使用...

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

    在前端开发中,我们经常会使用各种第三方库和工具来提高开发效率和代码质量。npm 是一个常用的包管理工具,其中就有许多优秀的开源包。 今天,我们将介绍一个名为 allsop-card 的 npm 包,它...

    3 年前
  • npm 包 system-utils 使用教程

    前言 在前端开发中,我们经常需要操作系统级别的功能,如:获取当前操作系统信息、读取目录、创建临时文件等等,这些功能可以通过 Node.js 提供的系统模块来实现,但对于前端开发者来说,它们很难直接使用...

    3 年前
  • npm 包 angular-event-accelerator 使用教程

    前言 Angular 是当前 Web 开发中非常流行的前端框架之一。在 Angular 的开发过程中,我们需要经常使用一些事件来触发组件之间的通信。而 angular-event-accelerato...

    3 年前
  • npm 包 wxmutator 使用教程

    在微信小程序开发中,我们经常需要对界面进行更新和处理数据。在实际开发中,我们可能会遇到一些问题,例如视图无法更新、数据同步问题等等。这些问题通常是由于不当的修改数据方式所导致的。

    3 年前
  • npm 包 allsop-api-service 使用教程

    在前端开发中,我们经常需要与后端进行数据交互。但是,直接编写原生的 AJAX 请求代码会显得十分麻烦和繁琐。为了提高开发效率,我们可以使用各种后端接口服务来简化代码编写,其中就包括了 allsop-a...

    3 年前
  • npm 包 allsop-table 使用教程

    在前端开发中,我们常常需要使用到表格展示数据的功能。在众多的 npm 包中,allsop-table 是一个十分好用的表格插件。本篇文章将为大家介绍该插件的使用方法和一些常见问题的解决方案。

    3 年前
  • NPM 包 lucky-card 使用教程

    NPM 是 JavaScript 的包管理器,用于在项目中管理第三方 JavaScript 库和工具。在前端开发中,经常需要使用一些开源的库和插件,而 lucky-card 就是一个基于 NPM 平台...

    3 年前

相关推荐

    暂无文章