从 iOS 客户端上传文件到 GraphQL

Posted

技术标签:

【中文标题】从 iOS 客户端上传文件到 GraphQL【英文标题】:Upload File to GraphQL from iOS client 【发布时间】:2021-03-19 23:48:24 【问题描述】:

我正在为 GraphQl 和 Apollo 客户端使用 Back4app 后端进行查询和突变。查询很好,但我无法使用执行突变将文件上传到后端。

它说要作为 FileInput 执行突变,但我不知道如何将 Uiimage 转换为 FileInput 以写入数据库。如果我只是将一个字符串传递给 FileInput,它就会到达数据库。但无法上传图片。

谁能给个建议

【问题讨论】:

【参考方案1】:

您可以使用 GraphQL 将文件上传到 Parse,方法是发送具有 FileType 类型的文件,该文件具有 upload 属性,符合 Upload scaclar 类型。

在 Parse 4.4 上运行的名为 Person 的类的突变,具有名称(字符串)、年龄(数字)和照片(文件),如下所示:

mutation createPerson
  createPerson(input:
    fields:
      name: "Alex"
      age: 40
      photo: 
        upload: file
      
    
  )
    person
      id
    
  

请注意,根据您使用的 Parse 版本,语法可能会略有不同。

还记得按照此处所述将file 作为上传文件传递:

https://www.apollographql.com/docs/ios/mutations/#uploading-files

【讨论】:

【参考方案2】:

您发送的那个 Mutation 的问题是您尝试将图像属性设置为 $file,而您应该像这样设置上传:

mutation SingleFileUpload($file: Upload!,$filename: String!)
  createImages(input:
    fields:
      imagename: $filename
      image: 
          upload: $file
      
    
  )
    images
      imagename
      image
        url
        name
      
    
  

这应该可以解决问题

【讨论】:

更新以前的答案,不要再发一个

以上是关于从 iOS 客户端上传文件到 GraphQL的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apollo 客户端将文件上传到 GraphQL

如何通过 Websocket 协议处理 GraphQL 中的文件上传?

nodejs问题将graphql上传文件发送到服务

如何在 hasura graphql 引擎上上传文件或图像

将图像上传到 GraphQL 服务器

GraphQL js 文件上传