Skip to content

Native Adapter 下缺少公开的原始请求流入口,导致 multipart 文件上传无法在应用层正常扩展 #1

Description

@zhouavs

问题描述

在使用 VextJS 的 native adapter 时,multipart/form-data 文件上传目前缺少可用的官方扩展入口。

根据现有文档和实现:

  • 内置 body-parser 只支持:
    • application/json
    • application/x-www-form-urlencoded
  • multipart/form-data 不在内置支持范围内
  • 但 native adapter 没有公开原始请求流或原始 Node.js request 对象
  • 内部 _getRawBody() 返回的是字符串,不适合 formidable、busboy 这类 multipart 解析器

结果

这会导致应用层虽然知道 multipart 需要“自行扩展”,但实际上没有稳定的公开能力去实现这件事。

如果要在 native adapter 下支持文件上传,当前通常只能:

  • 修改框架内部实现
  • 给 node_modules 打补丁
  • 在应用层重写 / 替换 adapter

这对一个常见场景来说改动过大。

期望

希望 native adapter 至少提供以下能力之一:

  1. 在 VextRequest 上公开原始请求对象
    例如:req.rawRequest

  2. 提供官方 multipart 插件 / 中间件

  3. 提供稳定的原始请求流访问方式
    而不是仅有字符串化后的 _getRawBody()

为什么需要这个能力

文件上传是基础能力。

目前 native adapter 在这件事上存在一个落差:

  • 文档上说 multipart 需要扩展
  • 但实际没有足够的公开扩展点

这使得 native adapter 在文件上传场景下不够完整,也增加了应用层接入成本和升级风险。

建议

如果可以的话,比较直接的方案是:

  • 在 native adapter 下公开原始请求对象
  • 明确文档中 multipart 插件可以基于这个对象做解析

这样应用层就可以直接接入成熟的 multipart 解析库,而不需要修改框架内部。

使用场景

  • adapter: native
  • 场景: multipart/form-data 文件上传
  • 诉求: 在应用层以官方方式接入 multipart 解析能力

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions