我目前正在尝试通过Relay上传文件,但每当我尝试执行突变时,我都会收到来自GraphQL服务器实现的语法错误。我目前正在使用graphql-js-0.4.18和graphql-relay-js-0.3.6。我假设这些包版本中的一个(或两个)是罪魁祸首。有谁知道我需要哪些最低版本的软件包来正确支持文件上传?我被迫将这些软件包移植到另一种语言,这就是为什么我担心所需的最低版本。提前谢谢!
变异请求
------WebKitFormBoundaryKwC5gIWABIRSXoeW
Content-Disposition: form-data; name="query"
mutation UploadFileMutation($input_0:CTI_Mutation_UploadFileInput!) {
uploadFile(input:$input_0) {
clientMutationId,
...F0
}
}
fragment F0 on CTI_Mutation_UploadFilePayload {
success
}
------WebKitFormBoundaryKwC5gIWABIRSXoeW
Content-Disposition: form-data; name="variables"
{"input_0":{"fileName":"test_file_upload.txt","clientMutationId":"3"}}
------WebKitFormBoundaryKwC5gIWABIRSXoeW
Content-Disposition: form-data; name="file"; filename="test_file_upload.txt"
Content-Type: text/plain
------WebKitFormBoundaryKwC5gIWABIRSXoeW--
突变反应
{"errors":[{"message":"Syntax Error GraphQL request (1:2) Invalid number, expected digit but got: \"-\".\n\n1: ------WebKitFormBoundaryKwC5gIWABIRSXoeW\n ^\n2: Content-Disposition: form-data; name=\"query\"\n","locations":[{"column":2,"line":1}]}]}
答案 0 :(得分:1)
事实证明,这根本不是GraphQL / Relay问题。我只需要为我的WebServer添加对multipart / form =数据处理的支持,现在我就能成功上传文件了。