【发布时间】:2021-12-15 05:15:25
【问题描述】:
我正在尝试使用 GraphQL API 将 .png/jpeg/.jpg 文件类型的用户头像从 Angular 客户端上传到 .netCore 服务器应用程序。
我设法从客户端以内容类型multipart/form-data 的请求发送要上传的图像。
但从 API 服务器收到 400 错误,说明不支持该内容类型。
错误信息如下:
消息:“无效的‘Content-Type’标头:不支持的媒体类型。 必须是“application/json”、“application/graphql”或“application/x-www-form-urlencoded”。见:http://graphql.org/learn/serving-over-http/."
我正在尝试像这样实现突变。
FieldAsync<StringGraphType>(
"testImageUpload",
arguments: new QueryArguments(
new QueryArgument<StringGraphType> { Name = "testArg" },
new QueryArgument<UploadGraphType> { Name = "file" }
),
resolve: async context =>
{
var testArg = context.GetArgument<string>("testArg");
var file = context.GetArgument<IFormFile>("file");
try
{
return await uploaderService().UploadImage(file);
}
catch (Exception e)
{
context.Errors.Add(new ExecutionError("Something happened!"));
return context.Errors;
}
});
我使用GraphQL.net 和GraphQL.Upload.AspNetCore 来支持多部分文件。
样本突变将是这样的:
mutation testImageUpload($testArg: String, $file: Upload) {
fileUpload{
testImageUpload(testArg: $testArg, file: $file)
}
}
任何人都可以向我建议如何使 .NetCore webAPI 应用程序接受multipart/form-data。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
标签: .net-core graphql asp.net-core-webapi graphql-dotnet apollo-angular