Загрузите изображение с помощью AWS Amplify Appsync в React

У меня есть проект реакции, созданный с помощью AWS Amplify и Appsync.

Я использую функциональность GraphQL в Amplify для взаимодействия с AppSync.

Я пытаюсь загрузить изображение на S3 из приложения реакции. Кто-нибудь делал это через Amplify GraphQL? Не могли бы вы помочь?

Кстати, я прочитал документацию о том, как это сделать с помощью Apollo и aws-appsync-react. Я пытаюсь понять, что делать с функциональностью GraphQL, встроенной в Amplify.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
2
0
493
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я думаю, что сейчас невозможно загрузить сложный объект через Amplify.API, так как для загрузки с помощью AppSync вам необходимо отправить complexObjectsCredentials клиенту AppSync.

const client = new AWSAppSyncClient({
    url: ENDPOINT,
    region: REGION,
    auth: { .. },
    complexObjectsCredentials: () => Auth.currentCredentials(),
});

И похоже, что вы не можете предоставить эти учетные данные при настройке расширения.

В качестве альтернативы вы можете использовать модуль Amplify.Storage для загрузки файлов без AppSync.

import Amplify from 'aws-amplify';
import awsconfig from './aws-exports';
Amplify.configure(awsconfig);

// above goes at root of application

// below is example

import { Storage } from 'aws-amplify'

var imageSrc = this.webcam.getScreenshot()

fetch(imageSrc)
    .then(res => res.blob() )
    .then( blob => {
        const file = new File( [blob], "tmp.png")
        key = "uuid_for_image"
        Storage.put(key, image)       
    })




для получения дополнительной информации: https://aws-amplify.github.io/docs/js/storage

Другие вопросы по теме