infinityloop-dev/graphpinator-upload

处理multipart formdata请求的模块。

v1.1 2023-11-10 18:00 UTC

README

⚡🌐⚡ 处理multipart formdata请求的模块。

简介

此模块允许 GraPHPinator 使用 multipart-formdata 请求进行上传处理。此模块在解析请求之前挂钩到 Graphpinator 工作流程,读取映射并将上传的文件放入相应的变量中。

安装

使用 composer 安装包

composer require infinityloop-dev/graphpinator-upload

如何使用

  1. 实现 FileProvider

FileProvider 是一个服务,通过键从 multipart 请求中提取文件。每个 HTTP 框架都提供自己的实现,而 FileProvider 则作为适配器。特定于框架的实现可以在相应框架的 Graphpinator 包中找到,例如 infinityloop-dev/graphpinator-nette 包含 Nette 的 HTTP 抽象的 FileProvider 实现。

  1. UploadModule 注册为 GraPHPinator 模块
$uploadModule = new \Graphpinator\Upload\UploadModule($fileProvider);
$graphpinator = new \Graphpinator\Graphpinator(
    $schema,
    $catchExceptions,
    new \Graphpinator\Module\ModuleSet([$uploadModule, /* possibly other modules */]),
    $logger,
);
  1. UploadType 注册到您的 Container

此步骤可能通过将 UploadType 注册为服务到您的 DI 解决方案中完成。

  1. 可选步骤:使用 infinityloop-dev/graphpinator-constraint-directives 验证上传文件。

有关更多信息,请访问 约束指令包

已知限制

  • 目前,此模块只能将文件放置到变量值中,而不能直接放置到参数中。
    • 这样做是为了确保实现简单性和与其他模块的兼容性。
    • 直接将文件放置到参数中可能没有好处。如果您遇到某些重要的边缘场景,请打开一个问题,我们可以在这里讨论可能的解决方案。