0

我使用 URQL 作为我的 react native graphql 客户端。我喜欢使用该库,但似乎没有一种简单的方法可以将从 expo 图像选择器中选择的文件上传到我的节点服务器。

我做了一些谷歌搜索,找到了一个Ben Awad 视频,他使用 ReactNativeFile 将结果转换为文件。问题是这是似乎适合 apollo 客户的唯一方式。urql 有这样的东西吗?将 uri & base64 转换为 JS 文件的代码是什么样的?

...
if (!imageResult.cancelled) {
  const file = new ReactNativeFile({
    uri: imageResult.uri,
    type: imageResult.type,
    name: "picture"
  });

图像选择 fn

const result = await ImagePicker.launchImageLibraryAsync({
  mediaTypes: ImagePicker.MediaTypeOptions.Images,
  allowsEditing: true,
  base64: true,
  aspect: [1, 1],
  quality: 1,
});
if (result.cancelled || !result.uri || !onSuccessful) return;
await onSuccessful(result);
4

1 回答 1

0

根据 ReactNativeFile 类的源代码 ( extract-files/public/ReactNativeFile.js ) 它只返回您输入的相同值。我认为使用具有相同数据的普通对象没有问题。如果你想使用它,你可以,apollo-upload-client 只从 extract-files 库(apollo-upload-client/public/ReactNativeFile.js)导出 ReactNativeFile

可能 apollo-client 会检查它是否是 ReactNativeFile 类的 instanceof,但我认为 URQL 不会检查它。

您应该遵循官方 URQL 文档进行文件上传,并且不要使用 apollo https://formidable.com/open-source/urql/docs/advanced/persistence-and-uploads/#file-uploads

于 2021-10-29T22:44:36.830 回答