第11章 ユーザーがモバイルアプリケーションからファイルをアップロードできるようにする
11.1. サーバーでのファイルアップロードの有効化 リンクのコピーリンクがクリップボードにコピーされました!
Data Sync Server は、GraphQL クエリーとともにバイナリーデータをアップロードするためのサポートを提供します。実装は、アップストリームの Apollo Server 機能に依存しています。
アップロード機能は、GraphQL マルチパートフォームリクエスト仕様を使用します。ファイルのアップロードは、サーバーとクライアントの両方に実装する必要があります。
- クライアントでは、HTML FileList オブジェクトがミューテーションにマップされ、マルチパートリクエストでサーバーに送信されます。
- サーバー上では、マルチパートリクエストが処理されます。サーバーはそれを処理し、リゾルバーにアップロード引数を提供します。リゾルバー機能では、アップロードプロミスがオブジェクトを解決します。
ファイルのアップロードは graphql-multipart-request-spec に基づいています。
手順
ファイルのアップロードを有効にするには、スキーマを作成し、Upload スカラーを使用します。以下に例を示します。
次のスキーマはファイルのアップロードを有効にします。Upload スカラーは、リゾルバーの引数の 1 つとして挿入されます。Upload スカラーには、すべてのファイルメタデータと、ファイルを特定の場所に保存するために使用できる Readable Stream が含まれています。
async singleUpload(parent, { file }) {
const { stream, filename, mimetype, encoding } = await file;
// Save file and return required metadata
}
async singleUpload(parent, { file }) {
const { stream, filename, mimetype, encoding } = await file;
// Save file and return required metadata
}
詳細は、Official Apollo blog post を参照してください。