问题描述
在使用 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 至少提供以下能力之一:
-
在 VextRequest 上公开原始请求对象
例如:req.rawRequest
-
提供官方 multipart 插件 / 中间件
-
提供稳定的原始请求流访问方式
而不是仅有字符串化后的 _getRawBody()
为什么需要这个能力
文件上传是基础能力。
目前 native adapter 在这件事上存在一个落差:
- 文档上说 multipart 需要扩展
- 但实际没有足够的公开扩展点
这使得 native adapter 在文件上传场景下不够完整,也增加了应用层接入成本和升级风险。
建议
如果可以的话,比较直接的方案是:
- 在 native adapter 下公开原始请求对象
- 明确文档中 multipart 插件可以基于这个对象做解析
这样应用层就可以直接接入成熟的 multipart 解析库,而不需要修改框架内部。
使用场景
- adapter: native
- 场景:
multipart/form-data 文件上传
- 诉求: 在应用层以官方方式接入 multipart 解析能力
问题描述
在使用 VextJS 的 native adapter 时,
multipart/form-data文件上传目前缺少可用的官方扩展入口。根据现有文档和实现:
body-parser只支持:application/jsonapplication/x-www-form-urlencodedmultipart/form-data不在内置支持范围内_getRawBody()返回的是字符串,不适合formidable、busboy这类 multipart 解析器结果
这会导致应用层虽然知道 multipart 需要“自行扩展”,但实际上没有稳定的公开能力去实现这件事。
如果要在 native adapter 下支持文件上传,当前通常只能:
node_modules打补丁这对一个常见场景来说改动过大。
期望
希望 native adapter 至少提供以下能力之一:
在
VextRequest上公开原始请求对象例如:
req.rawRequest提供官方 multipart 插件 / 中间件
提供稳定的原始请求流访问方式
而不是仅有字符串化后的
_getRawBody()为什么需要这个能力
文件上传是基础能力。
目前 native adapter 在这件事上存在一个落差:
这使得 native adapter 在文件上传场景下不够完整,也增加了应用层接入成本和升级风险。
建议
如果可以的话,比较直接的方案是:
这样应用层就可以直接接入成熟的 multipart 解析库,而不需要修改框架内部。
使用场景
multipart/form-data文件上传