当前位置:网站首页 > 技术博客 > 正文

文件上传的三种方式



文件上传,是 Web 应用的一个常见的功能。

框架内置了 Multipart 插件:

  • 解析浏览器上传的 的数据。
  • 提供 和 两种处理接口供开发者选择。
  • 默认提供了安全的限制。

获取到用户上传的数据后,开发者可以:

  • 存储为本地文件。
  • 提交给第三方服务,参见 通过 HttpClient 上传文件。
  • 大部分情况下,我们会转存给云存储服务,在本文中我们也会一并介绍到。

虽然在 的世界里面,Stream 才是主流。

但对于一般开发者来说, 并不是很容易掌握,尤其是错误处理环节。

因此,框架提供了 模式来简化开发。

相关的示例代码参见:eggjs/example/multipart-file-mode。

前端可以通过 或 等方式来上传文件。

譬如:

框架在 模式下,会把获取到的文件挂载到 数组上。

关键代码:

  • : 获取到的文件列表。
  • :示例代码,此处为上传到 OSS 云存储,下文会介绍到。
  • :处理完毕后,清理临时文件。

如果你对于 中的 模式非常熟悉,那么你可以选择此模式。

相关的示例代码参见:eggjs/example/multipart。

框架同样提供了简化开发的语法糖:

  • :获取上传的文件流,仅支持上传一个文件的情况。
  • 获取其他表单字段。

因此对应的前端代码:

对应的后端代码:

同时上传多个文件的场景,不能通过 来获取,只能通过以下方式:

模式下,在异常处理里面,必须将上传的文件流消费掉,要不然浏览器响应会卡死

如上示例,你可以使用 stream-wormhole 和 mz-modules/pump 模块来处理。

为了避免恶意的攻击,框架默认对文件上传接口,限制了 和 的个数和大小。

默认配置如下,开发者可以根据需求修改对应的配置。

其中, 支持 这种人性化的方式,具体参见 humanize-bytes 模块。

为了保证文件上传的安全,框架限制了支持的文件格式。默认的后缀白名单参见源码。

开发者可以通过配置 来新增允许的类型:

如果你希望覆盖框架内置的白名单,可以配置 属性:

当获得上传的文件之后,我们一般会转存到云存储服务,尤其是在集群的情况下。

常用的服务有:

  • OSS。

框架内置了 egg-oss 插件,默认未开启。

配置

首先需要开启插件:

然后配置一下你的 的 , , 等必要信息。

然后通过 方法即可上传,支持 和 两种模式。

模式

模式

还有一种常见的需求:前端直接上传文件到 ,不经过我们的 应用。

OSS 提供了 STS 临时授权方式。

上述的 插件的底层是 ali-oss 模块,也提供了对应的支持,具体参见文档。

  • 上一篇: 语音降噪算法
  • 下一篇: mlc颗粒最大容量
  • 版权声明


    相关文章:

  • 语音降噪算法2025-08-11 10:30:05
  • py 打包exe2025-08-11 10:30:05
  • 增删改查是数据库的什么功能2025-08-11 10:30:05
  • thread多线程写法2025-08-11 10:30:05
  • i2c协议简介2025-08-11 10:30:05
  • mlc颗粒最大容量2025-08-11 10:30:05
  • redis缓存三大问题2025-08-11 10:30:05
  • boolean是什么数据类型2025-08-11 10:30:05
  • amc8怎么报名2025-08-11 10:30:05
  • socks5代理端口设置2025-08-11 10:30:05