我正在使用 Vue-Dropzone 通过 graphql 上传文件。一切正常,但由于我使用的是 graphql,因此我不需要将 URL 放在“dropzoneOptions”中,因为我将查询放在 Vuex 模块内的 Axios API 中,如下所示:
async vFileAdded(bomFile){
const formData = new FormData()
const data = {
query: `
mutation (
$file: Upload,
$projectId: ID!,
$region: String!,
$isTest: Boolean,
) {
uploadBom(
input: {
bom: $file,
projectId: $projectId,
region: $region,
isTest: $isTest,
}) {
project {
id
name
}
}
}
`,
variables: {
file: null,
projectId: "UHJvamVjdE5vZGU6MTU=",
region: "Lombardia",
isTest: true
}
}
formData.append('operations', JSON.stringify(data))
const map = {
'0': ['variables.file'],
}
formData.append('map', JSON.stringify(map));
formData.append('0', bomFile)
try {
axios.defaults.headers.common["Authorization"] =
"JWT " + localStorage.getItem("edilgo-token")
const result = await axios({
method: 'POST',
url: process.env.VUE_APP_API_URL,
data: formData,
})
console.log(result)
} catch (error) {
console.error(error)
}
},
现在正如我所说,它有效,但前提是我在“dropzoneOptions”中使用假网址。如果我什么都不写,我什至无法选择要上传的文件(现在我只是使用“http://localhost”来使其工作)。
我还尝试在未设置“url”时拖放文件,它只是在浏览器中下载文件。
我的问题是:
有没有更好的方法将 Dropzone 与 graphql 一起使用?也许我做错了
如果有人可以帮助我,我真的很感激。