我是刚开始对graphql做出反应的人。
我想通过网络接口将所有类型的文件上传到服务器。
我需要做的就是使用中继编写一个graphql变异,该变异将多部分表单数据发送到服务器。
我尝试在Google上进行搜索,但没有找到任何合适的解决方案。
答案 0 :(得分:0)
GraphQL消息的唯一真正的标准传输是a JSON HTTP POST。 “文件上传”在GraphQL中根本不是一个概念。您必须将文件内容编码为JSON(可能首先是base64编码),然后将其作为参数传递给突变(可能在"variables":
块中)。
{
"query": "mutation Upload($name: String!, $contents: String!) { uploadFile(name: $name, contents: $contents) { id } }",
"variables": {
"name": "hello.txt",
"contents": "aGVsbG8gd29ybGQ="
}
}
您可能考虑的另一种方法是生成一次性使用的上载URL。然后您将发生一个GraphQL变异,该变异会启动上传并返回URL
mutation StartUpload($name: String) {
startUpload(name: $name) {
id
url
}
}
,然后您的应用程序可以将文件HTTP POST到返回的URL。实施此操作是一项练习。