【发布时间】:2018-06-06 00:17:53
【问题描述】:
我正在尝试使用graphql-dotnet 上传图像文件,但它从未成功。
我在我的 GraphQLController 中获取文件对象:
var files = this.Request.Form.Files;
var executionOptions = new ExecutionOptions
{
Schema = _schema,
Query = queryToExecute,
Inputs = inputs,
UserContext = files,
OperationName = query.OperationName
};
这里是我的突变:
Field<UserGraphType>(
"uploadUserAvatar",
Description="Kullanıcı resmi yükleme.",
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<IntGraphType>> { Name = "Id", Description = "Identity Alanı" }
),
resolve: context => {
var file = context.UserContext.As<IFormCollection>();
var model = userService.UploadAvatar(context.GetArgument<int>("Id"),file);
return true;
}
);
我认为它接受了唯一的 JSON。它不接受作为文件类型的请求。
我还在客户端使用 React 和 apollo-client。控制台报错:
无法加载http://localhost:5000/graphql:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:8080' 不允许访问。响应的 HTTP 状态代码为 500。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
我正在尝试这样发送查询:
const { selectedFile,id } = this.state
this.props.uploadAvatar({
variables: {id},
file:selectedFile
}).then(result => {
console.log(result);
});
我能做些什么来实现这一目标?
【问题讨论】:
标签: reactjs asp.net-core graphql apollo-client graphql-dotnet