I been struggling to figure out how to get file upload working in graphql.
Here is basic implementation i have.
// eslint-disable-next-line import/no-extraneous-dependencies
const { ApolloServer, gql } = require('apollo-server-express')
// eslint-disable-next-line import/no-extraneous-dependencies
const express = require('express')
const typeDefs = gql`
type File {
filename: String!
mimetype: String!
encoding: String!
}
type Query {
_ : Boolean
}
type Mutation {
singleUpload(file: Upload!): File!,
singleUploadStream(file: Upload!): File!
}
`;
const resolvers = {
Mutation: {
singleUpload: (parent, args) => {
return args.file.then(file => {
const {createReadStream, filename, mimetype} = file
const fileStream = createReadStream()
return file;
});
},
singleUploadStream: async (parent, args) => {
const file = await args.file
const {createReadStream, filename, mimetype} = file
const fileStream = createReadStream()
const uploadParams = {Bucket: 'apollo-file-upload-test', Key: filename, Body: fileStream};
console.log(result)
return file;
}
},
};
const server = new ApolloServer({ typeDefs, resolvers });
const app = express()
server.applyMiddleware({ app })
const port = Number(process.env.API_PORT || 4000)
app.listen({ port }, () => {
// eslint-disable-next-line no-console
console.debug(`