GraphQL文件上传难题如何解决?ecodev/graphql-upload来助力!

在GraphQL项目中实现文件上传功能一直是一个挑战。GraphQL本身并没有内置的文件上传机制,这给开发者带来了一些不便。为了解决这个问题,ecodev/graphql-upload库应运而生。它提供了一个PSR-15中间件,专门用于支持GraphQL中的文件上传,完美兼容webonyx/graphql-php

composer在线学习地址:学习地址

安装

首先,你需要使用Composer安装这个库:

composer require ecodev/graphql-upload

配置为中间件

ecodev/graphql-upload遵循PSR-15标准,因此可以很容易地集成到任何支持PSR-15中间件的框架中。

Laminas Mezzio:

config/routes.php中,你可以这样配置:

use ApplicationActionGraphQLAction;use MezzioHelperBodyParamsBodyParamsMiddleware;use GraphQLUploadUploadMiddleware;$app->post('/graphql', [    BodyParamsMiddleware::class,    UploadMiddleware::class, // 关键所在    GraphQLAction::class,], 'graphql');

其他框架:

小文AI论文 小文AI论文

轻松解决论文写作难题,AI论文助您一键完成,仅需一杯咖啡时间,即可轻松问鼎学术高峰!

小文AI论文 69 查看详情 小文AI论文

对于其他支持PSR-15的框架,请参考相应的框架文档进行配置。如果你的框架不支持PSR-15中间件,你可能需要使用一些桥接方案,或者采用下面的直接使用方法。

直接使用

如果你不使用中间件,也可以直接调用该库:

withParsedBody(json_decode($request->getBody()->getContents(), true));// 处理上传的文件$uploadMiddleware = new UploadMiddleware();$request = $uploadMiddleware->processRequest($request);// 执行请求并发送响应$server = new StandardServer(/* 你的配置 */);$result = $server->executePsrRequest($request);$server->getHelper()->sendResponse($result);

在Schema中使用

在GraphQL Schema中,你可以这样定义Mutation:

 new ObjectType([        'name' => 'Query',        'fields' => [],    ]),    'mutation' => new ObjectType([        'name' => 'Mutation',        'fields' => [            'testUpload' => [                'type' => Type::string(),                'args' => [                    'text' => Type::string(),                    'file' => new UploadType(),                ],                'resolve' => function ($root, array $args): string {                    /** @var UploadedFileInterface $file */                    $file = $args['file'];                    // 处理文件                    $file->moveTo('some/folder/in/my/project');                    return 'Uploaded file was ' . $file->getClientFilename() . ' (' . $file->getClientMediaType() . ') with description: ' . $args['text'];                },            ],        ],    ]),]);

局限性

目前只支持PSR-7请求。

通过使用ecodev/graphql-upload,你可以轻松地在GraphQL应用中实现文件上传功能,避免了手动处理文件上传的复杂性,提高了开发效率。它是一个轻量级、易于集成的解决方案,值得你在GraphQL项目中尝试。

以上就是GraphQL文件上传难题如何解决?ecodev/graphql-upload来助力!的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/334807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Java方法重载:静态与非静态方法的同名规则与编译错误解析
上一篇 2025年11月5日 15:40:45
今日头条官方网站首页地址 今日头条平台入口官方直达链接
下一篇 2025年11月5日 15:40:52

相关推荐

发表回复

登录后才能评论
关注微信