使用其他字段上传文件的 Graphql 突变
Graphql mutation to upload file with other fields
我正在使用 Ariadne 创建一个 python GraphQL 服务器,并且我有以下更改来上传文件:
type Mutation {
uploadUserAvatar(file: Upload!): Boolean!
}
并使用以下 curl 命令上传图片:
curl http://localhost:8080/ \
-F operations='{ "query":"mutation ($file: Upload!) { uploadUserAvatar(file: $file) }","variables": { "file": null} }' \
-F map='{ "0": ["variables.file"] }' \
-F 0=@image.jpeg
上面的命令非常适合将图像上传到端点。
但是,我需要将用户 ID 与图像一起传递,在这样的突变中:
type Mutation {
uploadUserAvatar(userid: String!, file: Upload!): Boolean!
}
我正在努力获取正确的 curl 命令以使用 userid
上传图像。
我尝试了下面的命令
curl http://localhost:8080/ \
-F operations='{ "query":"mutation ($userid: String!, $file: Upload!) { uploadUserAvatar(userid: $userid, file: $file) }","variables": { "file": null, "userid": null } }' \
-F map='{ "0": ["variables.file"], "1": ["variables.userid"] }' \
-F 0=@etiqueta_LG.jpeg \
-F 1='abc1234'
但是我收到了这样的回复File data was missing for entry key '1' (https://github.com/jaydenseric/graphql-multipart-request-spec).
如何通过 userid
和 image
调用我的 GraphQL 端点进行上传?
不要像 -F name=content
那样包装表单数据的 content
部分,就像您对用户 ID 所做的那样。试试这个:
curl http://localhost:8080/ \
-F operations='{ "query":"mutation ($userid: String!, $file: Upload!) { uploadUserAvatar(userid: $userid, file: $file) }","variables": { "file": null, "userid": null } }' \
-F map='{ "0": ["variables.file"], "1": ["variables.userid"] }' \
-F 0=@etiqueta_LG.jpeg \
-F 1=abc1234
我没有尝试过这个,但我阅读了 curl 文档 (man curl
) 并阅读了关于表单数据的部分 -F
。
只有文件需要 'special treatment',其他数据以经典方式通过 "variables"
。
curl http://localhost:8080/ \
-F operations='{ "query":"mutation ($userid: String!, $file: Upload!) { uploadUserAvatar(userid: $userid, file: $file) }", "variables": { "file": null, "userid": "abc1234" } }' \
-F map='{ "0": ["variables.file"] }' \
-F 0=@image.jpeg
我正在使用 Ariadne 创建一个 python GraphQL 服务器,并且我有以下更改来上传文件:
type Mutation {
uploadUserAvatar(file: Upload!): Boolean!
}
并使用以下 curl 命令上传图片:
curl http://localhost:8080/ \
-F operations='{ "query":"mutation ($file: Upload!) { uploadUserAvatar(file: $file) }","variables": { "file": null} }' \
-F map='{ "0": ["variables.file"] }' \
-F 0=@image.jpeg
上面的命令非常适合将图像上传到端点。
但是,我需要将用户 ID 与图像一起传递,在这样的突变中:
type Mutation {
uploadUserAvatar(userid: String!, file: Upload!): Boolean!
}
我正在努力获取正确的 curl 命令以使用 userid
上传图像。
我尝试了下面的命令
curl http://localhost:8080/ \
-F operations='{ "query":"mutation ($userid: String!, $file: Upload!) { uploadUserAvatar(userid: $userid, file: $file) }","variables": { "file": null, "userid": null } }' \
-F map='{ "0": ["variables.file"], "1": ["variables.userid"] }' \
-F 0=@etiqueta_LG.jpeg \
-F 1='abc1234'
但是我收到了这样的回复File data was missing for entry key '1' (https://github.com/jaydenseric/graphql-multipart-request-spec).
如何通过 userid
和 image
调用我的 GraphQL 端点进行上传?
不要像 -F name=content
那样包装表单数据的 content
部分,就像您对用户 ID 所做的那样。试试这个:
curl http://localhost:8080/ \
-F operations='{ "query":"mutation ($userid: String!, $file: Upload!) { uploadUserAvatar(userid: $userid, file: $file) }","variables": { "file": null, "userid": null } }' \
-F map='{ "0": ["variables.file"], "1": ["variables.userid"] }' \
-F 0=@etiqueta_LG.jpeg \
-F 1=abc1234
我没有尝试过这个,但我阅读了 curl 文档 (man curl
) 并阅读了关于表单数据的部分 -F
。
只有文件需要 'special treatment',其他数据以经典方式通过 "variables"
。
curl http://localhost:8080/ \
-F operations='{ "query":"mutation ($userid: String!, $file: Upload!) { uploadUserAvatar(userid: $userid, file: $file) }", "variables": { "file": null, "userid": "abc1234" } }' \
-F map='{ "0": ["variables.file"] }' \
-F 0=@image.jpeg