我正在尝试使用
useMutation
上传用户个人资料图片
但我在上传时遇到400
错误。
这是我的代码。
文件输入
<input type="file" multiple required onChange={onChange} />
onChange
function onChange({ target: { validity, files } }: any) {
if (validity.valid) {
try {
updateUserImage({
variables: { files: { upload: files[0] } },
});
} catch (error) {
console.log(error);
}
}
}
更新用户图像
const [updateUserImage] = useMutation(updateProfileImageQuery);
const updateProfileImageQuery = gql`
mutation ($files: Upload!) {
updateUser(
data: { avatar: $files }
where: { id: "ckx8qymsv0046iol87cszngcn" }
) {
name
}
}
`;
我已经使用本机提取完成了发送 graphQL 突变的工作:
export const useGqlFile = async () => {
const formData = new FormData();
const query = `
mutation ($data: InputType!) {
item: createModel(data: $data) {
id
file {
filename
url
}
}
}
`;
formData.append(
"operations",
JSON.stringify({
variables: {
data,
},
query,
}),
);
formData.append("map", '{"1":["variables.data.file.upload"]}');
formData.append("1", file, file?.name);
const response = await fetch(
`${runtimeConfig.public.BACKEND_URL}/api/graphql`,
{
method: "POST",
body: formData,
headers: {
authorization,
},
},
);
return response;
};