Docs
Launch GraphOS Studio
You're viewing documentation for an upcoming version of this software. Switch to the latest stable version.

Uploading files


supports file uploads via the

with a few caveats:

  • Uploading files with is most often suitable for proof-of-concept applications. In production, using purpose-built tools for file uploads may be preferable. Refer to this
    blog post
    for the advantages and disadvantages of multiple approaches.
  • The
    Apollo Router
    doesn't support multipart/form-data uploads.

Uploading files with Apollo Kotlin

First, add the following custom mapping to the Apollo Gradle plugin configuration:

build.gradle[.kts]
apollo {
service("service") {
mapScalarToUpload("Upload")
}
}

In this example, the defines a custom type named Upload. You can use a different name as needed for your schema.

Note: You don't need to register a type adapter for Upload, because the mapScalarToUpload method registers it automatically.

Now let's consider a that takes an Upload as a parameter:

mutation SingleUpload($file: Upload!) {
singleUpload(file: $file) {
id
path
filename
mimetype
}
}

Create an instance of Upload using one of the factory methods:

// If you're on Android/JVM, you can turn a File into an upload
val upload = File.toUpload("application/json")
// On multiplatform, you can use `DefaultUpload`
val upload = DefaultUpload.Builder()
.fileName("filename.txt")
.content { sink ->
okioSource.use { sink.writeAll(it) }
}
.build()

And execute your :

val response = apolloClient.mutation(SingleUploadMutation(file = upload)).execute()
Previous
Apollo Debug Server
Next
Handling nullability
Edit on GitHubEditForumsDiscord

© 2024 Apollo Graph Inc.

Privacy Policy

Company