使用dotnet core客户端通过graphql查询上传文件

时间:2019-10-07 11:05:40

标签: .net-core graphql

我有一个用于数据迁移的dotnet核心控制台应用程序。 所有查询都通过graphQL查询/突变进行管理。作为graphQL客户端的处理程序,我使用的是:GraphQL.Client

现在,我面临文件上传问题。从graphql documentation可以理解,它必须通过多部分请求进行管理。我一直在寻找dotnet客户端实现,但没有运气,所有graphql客户端都是通过javascript处理的。

这是我要上传的示例:

  • graphql查询:
var str = @"mutation uploadFile( $entityId: String! $fileInput: FileInput $file: Upload! ) {
      uploadFile(entityId: $entityId, fileInput: $fileInput, file: $file) {
          id type originalName size mimeType
       }
   }";

var variables = new 
{
   entityId = model.EntityId,
   fileInput = new {
                    type = model.Type,
                    size = model.Size
                },
    file = "null"
};

var query = new GraphQLRequest
{
   Query = str,
   Variables = variables,
   OperationName = "uploadFile"
};

  • grapqhl请求
public async Task PostFileAsync(GraphQLRequest query, byte[] fileBytes)
{
    MultipartFormDataContent form = new MultipartFormDataContent();

    form.Add(new StringContent(JsonConvert.SerializeObject(query), Encoding.Default, "application/json"), "operations");
    form.Add(new StringContent("{\"0\":[\"variables.file\"]}", Encoding.Default, "application/json"), "map");

    form.Add(new StringContent(Convert.ToBase64String(fileBytes)), "0", "filename.pdf");

    HttpResponseMessage response = await _httpClient.PostAsync(this.Url, form);
}

响应,我得到:400(错误请求)-消息:必须提供查询字符串。

有人遇到这种情况或可以提供一些指导,将非常有帮助。

0 个答案:

没有答案