我正在寻找一个可以使用apollo-angular软件包通过graphql变异上传文件的软件包。 此外,任何人都可以帮助我了解文件上传和从服务器上传的文件格式吗?
感谢您的时间。
答案 0 :(得分:2)
在服务器模式中,您需要将文件参数定义为类型Upload。这是Apollo提供的内置类型。但是,如果您确实收到有关类型上载的错误,只需将其添加为custom Scalar type。
const { gql } = require('apollo-server');
const TypeDef = gql `
scalar Upload
type Mutation {
upload(file: Upload!)
}
`
在您的左轮手枪中,您可以在args中访问该文件,需要注意的一点是该文件将是一个应许;
const resolver = {
Mutation: {
async upload(obj, args, context, info) {
const file = await args.file;
// ... DO STUFF
},
}
}
您要查找的用于上传文件的软件包是apollo-angular-link-http
package。在查询上下文中,您需要将useMultipart设置为true。
因此,文件上传请求应如下所示。
// The Mutation Query Using Type of 'Upload' to represent the file
const uploadFileMutation = gql`
mutation UploadMutation($file: Upload!) {
upload(file: $file) {
YOUR RESPONSE
}
}
}
// The Apollo Client request
// Context of 'useMultipart' needs to be set to true to enable file upload
this.Apollo.mutate<any>({
mutation: uploadFileMutation,
variables: {
file: this.file
},
context: {
useMultipart: true
}
}).subscribe(({ data }) => {
this.response = data.upload
});