【问题标题】:How can I pass image file from Laravel to Express using Graphql?如何使用 Graphql 将图像文件从 Laravel 传递到 Express?
【发布时间】:2019-09-18 17:56:22
【问题描述】:

我有一个 laravel 项目,我的目标是将一个图像文件从 laravel 传递给我的 express 项目,以便我的 graphql 可以在之后保存我的图像文件的名称 成功重命名图像并将其上传到我的快递项目中。

目前,我正在使用\Softonic\GraphQL 从我的快递项目中查询数据。示例:

public function getUsers()
{
    $client = \Softonic\GraphQL\ClientBuilder::build('http://localhost:3002/graphql');

    $query = '
    query GetUsers($sort:[[String!]!]!){
          users(perPage:10, page: 1, sort: $sort){
            users{
              email
            }
          }
        }
    ';

    $var = [
        'sort' => "email"
    ];
    $response = $client->query($query, $var);
    return $response->getData();
}

上传图片时应该如何实现?我当前的代码看起来像这样..

public function updateImg(Request $request)
{
    $client = \Softonic\GraphQL\ClientBuilder::build('http://localhost:3002/graphql');

    $query = '
    mutation updateImage(id:ID!, $image: Upload!){
          updateImage(id:1, image: $image){
            users{
              email
            }
          }
        }
    ';

    $var = [
        'image' => $request->file('uploadImg');
    ];
    $response = $client->query($query, $var);
    return $response->getData();
}

在我的快递上,当我在console.log() 中检查我的image 时,它返回空。 我不确定我的做法是否正确,或者是否可以实现。

【问题讨论】:

  • 提供一些您正在尝试的代码以及您遇到的问题/错误。不要指望有人从头开始为你编写代码。
  • @N69S 编辑它。不小心贴出来了。
  • @N69S 我已经编辑了我的问题,介意帮助我吗?

标签: laravel express graphql


【解决方案1】:

添加对向 GraphQL 上传文件的支持的一种方法是通过 specification by Jayden Seric 添加多部分表单请求支持。他还为某些环境提供了implementation project。但是,我只使用 apollo-client 和 apollo-server-express 进行了尝试和测试。

【讨论】:

  • 我已经编辑了我的帖子,介意看看吗?我似乎无法让它工作。
  • 我假设Upload 是您在架构中定义的标量?我认为问题在于 GraphQL 不知道如何在没有具体实现的情况下处理这个问题(例如我之前提到的)。开箱即用的唯一受支持的标量类型是 IntFloatStringBooleanID - Scalar Types
  • 我实际上忘了提到我正在使用 Apollo,它默认带有 Upload。 apollographql.com/docs/apollo-server/data/file-uploads
  • 在服务器上还要确保您使用image.createReadStreamconst {createReadStream, filename, mimetype} = await <Upload>image;const stream = await createReadStream(); 来创建文件流。
  • 在您发布的链接上,它实际上确实引用了这篇文章 blog.apollographql.com/…,它指的是 Jayden Seric 关于如何使用 Upload 标量在与您的突变相同的请求中发送文件的方法.请参阅客户端设置部分。实际上,替代方法似乎是将文件作为 base64 编码的字符串传递,但我想你根本不需要 Upload 标量。
猜你喜欢
  • 1970-01-01
  • 2018-01-19
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 2019-11-23
  • 2018-08-03
  • 2020-11-13
  • 1970-01-01
相关资源
最近更新 更多