infinityloop-dev / graphpinator-upload
处理multipart formdata请求的模块。
v1.1
2023-11-10 18:00 UTC
Requires
- php: >=8.1
- infinityloop-dev/graphpinator: ^1.6
- infinityloop-dev/utils: ^2.3
- psr/http-message: ^2.0
Requires (Dev)
- infection/infection: ^0.27
- infinityloop-dev/coding-standard: ^0.2
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.4
This package is auto-updated.
Last update: 2024-09-23 20:47:45 UTC
README
⚡🌐⚡ 处理multipart formdata请求的模块。
简介
此模块允许 GraPHPinator 使用 multipart-formdata 请求进行上传处理。此模块在解析请求之前挂钩到 Graphpinator 工作流程,读取映射并将上传的文件放入相应的变量中。
安装
使用 composer 安装包
composer require infinityloop-dev/graphpinator-upload
如何使用
- 实现
FileProvider
FileProvider
是一个服务,通过键从 multipart 请求中提取文件。每个 HTTP 框架都提供自己的实现,而 FileProvider
则作为适配器。特定于框架的实现可以在相应框架的 Graphpinator 包中找到,例如 infinityloop-dev/graphpinator-nette
包含 Nette 的 HTTP 抽象的 FileProvider
实现。
- 将
UploadModule
注册为 GraPHPinator 模块
$uploadModule = new \Graphpinator\Upload\UploadModule($fileProvider); $graphpinator = new \Graphpinator\Graphpinator( $schema, $catchExceptions, new \Graphpinator\Module\ModuleSet([$uploadModule, /* possibly other modules */]), $logger, );
- 将
UploadType
注册到您的Container
此步骤可能通过将
UploadType
注册为服务到您的 DI 解决方案中完成。
- 可选步骤:使用
infinityloop-dev/graphpinator-constraint-directives
验证上传文件。
有关更多信息,请访问 约束指令包。
已知限制
- 目前,此模块只能将文件放置到变量值中,而不能直接放置到参数中。
- 这样做是为了确保实现简单性和与其他模块的兼容性。
- 直接将文件放置到参数中可能没有好处。如果您遇到某些重要的边缘场景,请打开一个问题,我们可以在这里讨论可能的解决方案。