Docs
General
Types
Guides
Editor integration
Concepts
Integrations
Operations
File Upload
All Strawberry integrations support multipart uploads as described in the GraphQL multipart request specification. This includes support for uploading single files as well as lists of files.
Uploads can be used in mutations via the Upload
scalar.
ASGI
Since ASGI uses asyncio for communication the resolver must be async as well.
Example:
import typingimport strawberryfrom strawberry.file_uploads import Upload
@strawberry.typeclass Mutation: @strawberry.mutation async def read_file(self, file: Upload) -> str: return await file.read()
@strawberry.mutation async def read_files(self, files: typing.List[Upload]) -> typing.List[str]: contents = [] for file in files: content = (await file.read()).decode() contents.append(content) return contents
Sanic / Flask / Django / AIOHTTP
Example:
import typingimport strawberryfrom strawberry.file_uploads import Upload
@strawberry.typeclass Mutation: @strawberry.mutation def read_file(self, file: Upload) -> str: return file.read().decode()
@strawberry.mutation def read_files(self, files: typing.List[Upload]) -> typing.List[str]: contents = [] for file in files: content = file.read().decode() contents.append(content) return contents