0

我正在使用 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).

如何调用我的 GraphQL 端点传递useridimagefor upload ?

4

2 回答 2

2

只有文件需要“特殊处理”,其他数据以经典方式传递,由"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
于 2020-07-01T18:40:51.687 回答
0

不要像使用用户 ID 那样包装content表单数据的部分。-F name=content试试这个:

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

于 2020-07-01T18:14:56.883 回答