Lighthouse Graphql File Upload

Suma Das
2 min readJun 16, 2021

It was difficult to find a graphql query with file upload. So searched from other sources and found this solution

https://lighthouse-php.com/master/digging-deeper/file-uploads.html#setup

First Step:
Just to test if file upload is working

Include this in your schema file:
scalar Upload

@scalar(class: “Nuwave\\Lighthouse\\Schema\\Types\\Scalars\\Upload”)

extend type Mutation {

“A Test Mutation to upload file”

upload(file: Upload!): String

}

php artisan lighthouse:mutation Upload

Upload.php
<?php

namespace App\GraphQL\Mutations;

class Upload

{

* @param null $_

* @param array<string, mixed> $args

*/

public function __invoke($_, array $args)

{

$file = $args[‘file’];

return $file->storePublicly(‘uploads’);

// TODO implement the resolver

}

}

For single file upload

For multiple file upload

For my query this worked:

Multiple name file uploaded can be referred from https://waihein.medium.com/uploading-multiple-files-in-laravel-lighthouse-graphql-19d1f571c525

Single File Upload in Single Input
mutation($fileff:Upload!){
upload(file:$fileff)
}
Mutation Code:
“A Test Mutation to upload single”

upload(file: Upload!): String!

MUltiple Upload in a single input:

mutation($logoImageFile:[Upload]! ){
uploadMultiFilee(logoImageFile: $logoImageFile)
}

In Mutation:
“A Test Mutation to upload single input multiple files”

uploadMultiFilee(logoImageFile: [Upload]!): String

Single file upload into multiple input names
mutation($logoImageFile:Upload!,$coverImageFile:Upload!){
uploadFiles(logoImageFile: $logoImageFile, coverImageFile: $coverImageFile)
}
Mutation Code:

"A Test Mutation to upload multiple inout files"

uploadFiles(logoImageFile: Upload!, coverImageFile: Upload!): String

Multiple file upload into multiple input

--

--