介绍npm包 @hapi/subtext以及使用教程

阅读时长 6 分钟读完

简介

在前端开发中,我们时常需要处理用户上传的文件,尤其是大文件,传统的读取和解析文件的方式难以处理大文件,因此我们需要使用一些优秀的框架和工具来减轻这种痛点。@hapi/subtext就是这样一个解决方案,它是一个用于解析HTTPmultipart / form-data payload 的插件。它可以快速轻松地处理大文件上传,并支持多种配置选项,如压缩、限制大小等。

安装

使用npm全局安装:

使用

@hapi/subtext 的使用非常简单。首先,我们需要导入@hapi/subtext插件,然后将其作为中间件应用到HTTP服务器上。下面是一个简单的Node.js示例:

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

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

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

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

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

-------

在这个例子中,我们把@hapi/subtext 中间件注册到了Hapi服务器上。

在路由处理器中,我们可以直接通过request.payload访问上传的文件数据。

options.payload 允许我们自定义如何处理请求体。在这个例子中,我们设置了:

  • output: 'stream' :把payload解析为一个可读流
  • parse: true :若payload是JSON、urlencoded或multipart类型,自动解析,并将其值放入request.payload中
  • allow: 'multipart/form-data' :只解析符合multipart/form-data格式的payload
  • maxBytes: 1024 * 1024 :设置payload最大字节数,若超出则会返回Request Entity Too Large错误。
  • multipart: true :自动解析multipart/form-data类型的请求体,并将其值放入request.payload中

上述设置可根据需求灵活配置。

示例

我们来看一个完整的例子:

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

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

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

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

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

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

-------

在这个例子中,我们首先在HTML页面中添加文件上传表单。在服务器端,我们注册了Subtext中间件,然后为路由配置了正确的payload选项。在路由处理器中,我们可以直接通过request.payload访问上传的文件数据。

总结

通过@hapi/subtext,我们可以轻松地处理大文件上传并进行更高级的配置,如解压、限制大小等。本文介绍了@hapi/subtext的用法和配置选项,并给出了一个完整的Node.js示例。希望对你有所帮助!

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