Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在react admin graphql中上载图像_Graphql_Image Upload_React Admin - Fatal编程技术网

如何在react admin graphql中上载图像

如何在react admin graphql中上载图像,graphql,image-upload,react-admin,Graphql,Image Upload,React Admin,我在react管理文档中看到了示例dataprovider,它处理图像上传并将其转换为Base64,但我不能将其用于graphql dataprovider,有人能帮我吗?实际上,我需要一段代码来处理react admin graphql dataprovider中的图像上载您必须创建另一个客户端来将图像(或文件)转换为base64,并围绕它包装graphql客户端。像这个: upload.js 从'react admin'导入{CREATE,UPDATE} /** *将上载输入返回的“File

我在react管理文档中看到了示例dataprovider,它处理图像上传并将其转换为Base64,但我不能将其用于graphql dataprovider,有人能帮我吗?实际上,我需要一段代码来处理react admin graphql dataprovider中的图像上载

您必须创建另一个客户端来将图像(或文件)转换为base64,并围绕它包装graphql客户端。像这个:

upload.js

从'react admin'导入{CREATE,UPDATE}
/**
*将上载输入返回的“File”对象转换为base 64字符串。
*这不是在生产中存储图像的最佳方式,但它是
*足以说明数据提供者装饰的想法。
*/
const convertFileToBase64=文件=>
新承诺((解决、拒绝)=>{
const reader=new FileReader()
reader.readAsDataURL(file.rawFile)
reader.onload=()=>解析(reader.result)
reader.onerror=拒绝
})
导出默认数据提供程序=>(获取类型、资源、参数=>{
如果(资源=='Photo'&&(fetchType===CREATE | | fetchType===UPDATE)){
常量{data,…rest_params}=params
返回convertFileToBase64(data.data)。然后(base64=>{
返回数据提供程序(获取类型、资源、{
…其他参数,
数据:{…数据,数据:base64}
})
})
}
返回数据提供程序(获取类型、资源、参数)
}
data.js

import buildGraphQLProvider,{buildQuery}来自'ra data graphql simple'
从“apollo链接http”导入{createHttpLink}
从“阿波罗链接”导入{apollo链接}
从“阿波罗链接错误”导入{onError}
从“../authentication”导入{AUTH_KEY}
从“../schema”导入{data}
const customBuildQuery=introspection=>(fetchType、resource、params)=>{
返回buildQuery(内省)(fetchType、resource、params)
}
const httpLink=createHttpLink({uri:process.env.REACT\u APP\u GRAPHQL\u uri})
const middlewareLink=新阿波罗链路(操作,前进)=>{
操作.setContext({
标题:{
授权:`Bearer${localStorage.getItem(AUTH_KEY)}`| null
}
})
返回前进(操作)
})
const errorLink=onError({networkError})=>{
if(networkError.statusCode==401){
//注销();
}
})
const link=middlewareLink.concat(httpLink,errorLink)
导出默认值()=>
buildGraphQLProvider({
客户选项:{
链接:链接
},
内省:{schema:data.\uu schema},
buildQuery:customBuildQuery
})
App.js

import React,{Component}来自“React”
从“react Admin”导入{Admin,Resource}
从“数据”导入buildGraphQLProvider
从“上载”导入addUploadCapabilities
从“仪表板”导入仪表板
从“资源/用户”导入用户
从“资源/事件”导入事件
从“资源/照片”导入照片
类应用程序扩展组件{
状态={dataProvider:null}
组件安装(){
buildGraphQLProvider().then(dataProvider=>this.setState({dataProvider}))
}
渲染(){
const{dataProvider}=this.state
如果(!数据提供程序){
返回(
加载。。。
)
}
返回(
)
}
}
导出默认应用程序