在React中使用AWS Amplify Appsync上传图像

时间:2018-08-08 06:00:59

标签: graphql aws-appsync aws-amplify

我有一个使用AWS Amplify和Appsync设置的react项目。

我正在使用Amplify中的GraphQL功能与AppSync交互。

我正在尝试从react应用程序将图像上传到S3。有人通过Amplify GraphQL做到了吗?你能帮忙吗?

顺便说一句,我已经阅读了有关如何使用Apollo和aws-appsync-react进行操作的文档。我试图弄清楚如何使用Amplify中内置的GraphQL功能。

2 个答案:

答案 0 :(得分:2)

我认为现在无法通过Amplify.API上传复杂的对象,因为要通过AppSync进行上传,您需要向AppSync客户端提交complexObjectsCredentials

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

似乎在配置放大时无法提供这些凭据。

或者,您可以使用“ Amplify.Storage”模块上传没有AppSync的文件

答案 1 :(得分:1)

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