npm 包 egg-qiniu-sdk 使用教程

前言

如今,互联网中的大部分应用都需要上传文件功能,例如图片、视频、文档等。因此,云存储服务也应运而生,其中七牛云是一家值得推荐的云存储服务商。七牛云提供了丰富的 API 和 SDK,让开发者能够快速使用云存储服务。

本文将介绍一个 npm 包 —— egg-qiniu-sdk,它是 Egg.js 框架中使用七牛云服务的封装包,可以方便地将七牛云作为 Egg.js 项目的上传文件服务。

安装和配置

为了使用 egg-qiniu-sdk,我们需要先安装它。使用以下命令安装:

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

安装完成后,我们需要在 Egg.js 中进行配置。

在 config 文件夹下新建 config.default.js 文件。在其中加入如下代码:

------------- - -
  ---------- ----- -----
  ---------- ----- --------
  ------- ----- --------
  -- ----
  ----- ----- ------
  ------- ----- --------
  --------- ----- ----------
  -- ----- ---
  ---- ---------- ---- -- -
    -- ------ ------
    ------ --------------------------------
  -
--
  • accessKey:在七牛云控制台中申请的 AccessKey;

  • secretKey:在七牛云控制台中申请的 SecretKey;

  • bucket:用来存储文件的空间名称;

  • zone:该参数可以不填。默认为 Zone_z0,也就是华东地区;

  • origin:该参数可以不填。默认为 http://${bucket}.qiniudn.com/

  • pathname:该参数可以不填。默认为 /upload/

  • key:可选参数,为自定义上传 key。默认为随机字符串。

使用方法

封装 Service

在应用中,我们通常会将对七牛云的请求封装成 Service,以便在 Controller 中使用。

在 app/service 目录下新建文件 qiniu.js,其中加入如下代码:

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

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

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

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

异步上传文件

在上传文件时,我们可以使用七牛云提供的异步上传方式,从而在上传完文件后,七牛云会异步地执行我们提供的 callback 函数。

在 app/controller 目录下新建文件 upload.js,其中加入如下代码:

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

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

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

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

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

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

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

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

-------------- - -----------------
  • 在 egg 中,我们可以使用 multipart() 方法获取上传的文件。由于异步上传文件时,需要等待文件流全部传输到服务器才能上传到七牛云,因此需要循环处理。

  • 在处理每个 part 时,我们可以通过调用 await ctx.helper.saveUploadFile(part, { extname: '.png', sha1: true }) 方法来保存文件至本地,并获取类似如下的 fileInfo:

-
  ---------- -------
  ----------------- -----------
  ------------ -----------------------------------------
  ----- ------------------------------------------
-
  • 同时,在该方法中可以调用 ctx.app.config.qiniu.key 来获取自定义上传 key 的方法。我们可以自行实现该方法,以便将上传 key 与当前用户关联。默认的实现方式为返回一个随机字符串。

  • 最后,我们通过调用 formUploader.putFile() 方法来上传文件到七牛云。

  • 该接口的返回值为上传文件的 key。

在模板中使用上传文件链接

在模板中,我们可以使用以下方法来生成文件的链接:

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

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

其中,上述代码中,fileKey 即为我们上传时返回的 key。

总结

本文介绍了 Egg.js 中使用七牛云上传文件的 npm 包 —— egg-qiniu-sdk,并且将它封装到 Service 中,以便在 Controller 中进行调用。

同时,本文还给出了如何使用异步上传文件的示例代码,以及在模板中使用上传文件链接的方法。它们不仅在 Egg.js 中使用,也对于其他框架实现上传文件功能时有一定的参考价值。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60059eb381e8991b448ed4c0


猜你喜欢

  • npm 包 @citizenos/stream_upload 使用教程

    最近,@citizenos/stream_upload 这个 npm 包备受关注。该包主要用于向文件上传流上传文件。在本文中,我们将学习如何使用这个包。 什么是 @citizenos/stream_u...

    3 年前
  • npm 包 jsdoc-webpack4-plugin 使用教程

    如果你正在编写 JavaScript 库或构建了一个 Node.js 应用程序,那么文档化是非常重要的。文档化可以帮助其他开发人员理解你的代码库,并更快地进行开发。

    3 年前
  • npm 包 kaiquecruz-cordova-plugin-chrome-apps-sockets-udp 使用教程

    前言 在前端开发中,我们经常会需要在不同设备之间进行数据传输。而 UDP 协议是一种面向无连接的传输层协议,具有简单、快速和高效的特点。本文将介绍 npm 包 kaiquecruz-cordova-p...

    3 年前
  • npm 包 react-native-template-re-base-test 使用教程

    在 React Native 的开发中,我们经常需要用到模板来加快应用的开发速度。react-native-template-re-base-test 是一个非常流行的模板,它大大减少了应用的开发难度...

    3 年前
  • npm 包 watch-typing 使用教程

    前言 在前端开发过程中,经常需要使用一些第三方库。而这些库的升级和安装可能经常会出现问题。为了方便管理,npm 包管理器应运而生。npm 是一个管理前端依赖包的工具,它可以使我们在开发时更加方便地管理...

    3 年前
  • npm 包 @batteryincluded/ts-eventsourcing 使用教程

    背景 在现代的大型应用程序中,通过事件驱动架构实现的事件溯源(Event Sourcing)模式变得越来越流行。它强制开发人员将所有状态变更视为事件,并记录下这些事件,而不是直接将更改写入数据库。

    3 年前
  • npm 包 lycwed-cordova-plugin-clipboard 使用教程

    前言 在前端开发中,我们常常需要实现复制与粘贴的功能。Cordova 插件 lycwed-cordova-plugin-clipboard 提供了实现这些功能的解决方案。

    3 年前
  • npm包 kofi-body 使用教程

    在前端开发中,经常需要对页面进行布局,而布局又需要用到各种不同的HTML元素。kofi-body就是一个方便的npm包,可以帮助我们快速构建HTML页面的布局。 kofi-body简介 kofi-bo...

    3 年前
  • npm 包 nuxt-base 使用教程

    什么是 nuxt-base nuxt-base 是一个基于 nuxt.js 的前端脚手架,它提供了一个现代化,结构合理的前端项目基础架构,帮助开发者快速搭建基于 Vue.js 的 Web 应用程序。

    3 年前
  • npm 包 abtest-util 使用教程

    一、前言 在大型 Web 应用开发中,我们经常需要进行 A/B 测试,以了解用户喜好,优化页面设计或功能等。而在实现 A/B 测试时,我们通常需要使用到一些工具。其中,npm 包 abtest-uti...

    3 年前
  • npm 包 Browser-img-resize 使用教程

    简介 Browser-img-resize 是一个轻量级的浏览器端图片压缩 npm 包,它使用 JavaScript 编写,能够帮助前端开发人员快速压缩图片,从而提高网站的性能和用户体验。

    3 年前
  • npm 包 json-api-transform 使用教程

    前言 在前端开发中,如何处理 API 数据是一个非常重要的问题。API 返回的数据通常都是 JSON 格式的数据,但是这些数据并不总是符合前端的需求。因此,需要使用一些工具对数据进行转换和处理,这样才...

    3 年前
  • npm 包 kofi-cors 使用教程

    在前端开发中,网站的前端界面通常需要和后端服务器进行交互。而在跨域请求时,由于浏览器的安全限制,会导致请求失败。为了解决这个问题,我们可以使用 npm 包 kofi-cors,来帮助我们处理跨域请求。

    3 年前
  • NPM 包 Nelson-editor 使用教程

    在前端开发中,文本编辑器是一个必不可少的工具。而 Nelson-editor 是一个优秀的文本编辑器,可以帮助开发者提高编码效率。本文将为大家详细介绍如何使用 Nelson-editor。

    3 年前
  • npm 包 react-stepzilla-tt 使用教程

    介绍 React Stepzilla TT 是一个非常好用的 React 步骤向导组件,可以帮助我们轻松地创建完整的多步骤表单并管理步骤之间的导航。 React Stepzilla TT 是基于 St...

    3 年前
  • npm 包 web-extension-webpack-plugin 使用教程

    在前端开发中,我们经常需要开发浏览器插件,而 webpack 是前端开发中使用最广泛的构建工具之一。而 web-extension-webpack-plugin 就是一个可以将 webpack 构建好...

    3 年前
  • npm 包 criticli 使用教程

    在前端开发中,我们经常需要进行代码审查并进行代码评估。为了更高效地进行代码审查,我们可以使用 npm 包 criticli 来快速地进行代码质量评估和问题检测。 本篇文章将详细介绍如何使用 npm 包...

    3 年前
  • npm 包 raster-grid 使用教程

    前言 在前端开发中,经常会用到图片的处理和展示。虽然有时候我们需要高清的图片来提高网站的美观度,但是这也可能导致图片太大而加载缓慢。raster-grid 就是用于帮助我们解决这个问题的一个 npm ...

    3 年前
  • NPM包——json-lorem使用教程

    在前端开发中,经常需要用到一些假数据作为测试和开发之用,这时候 json-lorem 这款 npm 包就显得尤为重要。它可以帮助我们快速生成各种各样的 JSON 格式的假数据。

    3 年前
  • npm 包 generator-ts-node-aws 使用教程

    在前端领域,使用 npm 包来管理项目依赖已经非常普遍了。而对于 TypeScript 开发者来说,generator-ts-node-aws 这个 npm 包可以帮助我们更快捷地搭建 TypeScr...

    3 年前

相关推荐

    暂无文章