使用apollo-client
上传文件
apollo 文件上传
依赖
- apollo-client
- apollo-link
- apollo-upload-client
- apollo-cache-inmemory
客户端创建
apolloClient.js
import { ApolloClient } from 'apollo-client'
import { createUploadLink } from 'apollo-upload-client'
import { ApolloLink, from } from 'apollo-link'
import { InMemoryCache } from 'apollo-cache-inmemory'
const authLink = new ApolloLink((operation: Operation, forward) => {
operation.setContext({
headers: {
Authorization: getToken(),
},
})
return forward(operation)
})
const uploadLink = createUploadLink({
uri: `${API_URL}`,
})
export const apolloClient = new ApolloClient({
link: from([authLink, uploadLink]), // uploadLink一定要放最后
cache: new InMemoryCache(),
})
使用
uploadFile.js
import gql from 'graphql-tag'
import { apolloClient } from 'apolloClient'
export function uploadFile(file) {
const query = gql`
mutation($file: Upload!) {
uploadFile(file: $file) {
id
attachname
filename
}
}
`
return apolloClient.mutation({
mutation,
variables: {
file,
},
})
}