react-native - 无法使用`apollo-upload-client`将图像上传到graphql服务器`graphql-upload`
问题描述
我正在尝试将图像从 react-native 应用程序上传到 apollo-server,但出现以下错误:
message: "Variable "$photo" got invalid value { uri: "file:///data/user/0/com.dummyapp/cache/react-native-image-crop-picker/IMG_20211028_171740.jpg", name: "1635453941000", type: "image/jpeg" }; Upload value invalid."
服务器端解析器变异实现
import { FileUpload } from "graphql-upload";
这是FileUpload
模块类型定义中的样子:
export interface FileUpload {
filename: string;
mimetype: string;
encoding: string;
createReadStream(): ReadStream;
}
我想我应该期待客户的这一点。
客户端实现
const USER_UPLOAD_AVATAR = gql`
mutation userUploadAvatar($photo: Upload!) {
userUploadAvatar(photo: $photo)
}
`;
const avatarPhotoAsReactNativeFile = new ReactNativeFile({
uri: avatarPhoto.path, // -> "file:///data/user/0/com.univarsity/cache/react-native-image-crop-picker/IMG_20211028_171740.jpg"
name: avatarPhoto.modificationDate, // -> "1635453941000"
type: "image/jpeg",
});
const [avatarPhotoUploadHandler] = useMutation(USER_UPLOAD_AVATAR, {
variables: { photo: avatarPhotoAsReactNativeFile },
onCompleted: data => console.log(data),
onError: error => console.log(error),
});
const MyScreen = () => <Button title="upload avatar" onPress={avatarPhotoUploadHandler} />
这是我为得到错误而汇总的逻辑:D,任何想法都将不胜感激:)
解决方案
推荐阅读
- exception - Apache Flink 抛出“分区已完成”异常
- android - 如何在 Scrollview 中停止滚动 Recyclerview?
- figma - Figma 如何准确裁剪图片?
- macos - macOS,Spyder 工作,但 spyder.app 不再启动
- java - 无效的正则表达式:悬空元字符“*”
- java - 应该打印前 100 个素数的程序,只打印 0 和 1
- prefix - 空字符串可以是字符串的前缀还是后缀?
- python - 如何获取本地IP地址python?
- java - Java 8 哈希图 | 龙目岛@Data | Collectors.groupingBy 中的方法不可读 | 复合键
- node.js - 如何在 index.js 中包含给定模式