apollo server file upload
//resolvers.js
export default {
Query: {
usersActivation() {
return 'Hello Wordl'
}
},
Mutation: {
uploadFile: async (parent, { file }) => {
const { filename, createReadStream } = await file.promise
fileUpload({ filename, stream: createReadStream() })
return true
}
}
}
//typedefs.js
export default gql(`
scalar Upload
type Query {
helloWordl : String!
}
type Mutation {
uploadFile(file: Upload!): Boolean
}
`)
// util.upload.js
const uploadFile = ({ filename, stream }) => {
stream
.pipe(createWriteStream(resolve(process.cwd(), `src/images/${filename}`)))
.on('finish', () => Promise.resolve())
.on('error', Promise.reject)
}
const validateFile = ({ filename, stream }) => {
const extFile = filename.replace('.', '')
const extPattern = /(jpg|jpeg|png|gif|svg)/gi.test(extFile)
if (!extPattern) throw new TypeError('Image format is not valid')
const fileExits = existsSync(resolve(process.cwd(), `src/images/${filename}`))
if (!fileExits) return uploadFile({ filename, stream })
unlink(resolve(process.cwd(), `src/images/${filename}`), (error) => {
if (error) throw error
return uploadFile({ filename, stream })
})
}
export const fileUpload = ({ filename, stream }) =>
filename ? validateFile({ filename, stream }) : new Error('Image is required')
// request query playground
mutation UPLOAD_FILE($file: Upload!) {
uploadFile(file: $file)
}
0
7
file upload
Thank you!
7
0
Are there any code examples left?
New code examples in category Other
-
Other 2023-03-27 22:50:10 how to select the whole line in vscode with keyboard shortcut
-
Other 2022-03-27 22:45:24 income of a web developer
-
Other 2022-03-27 22:35:01 \pyrcc_main.py: File does not exist 'resources.qrc'
-
Other 2022-03-27 22:30:45 rick roll embed code
-
Other 2022-03-27 22:20:08 Circuit_04_Potentiometer
-
Other 2022-03-27 22:20:05 iterative power
-
Other 2022-03-27 22:15:11 flutter run all
-
Other 2022-03-27 22:10:05 when is karlson release
-
Other 2022-03-27 22:10:02 wp .htaccess example
-
Other 2022-03-27 22:00:08 bash pause in file read line by line