ImagePicker.launchCameraAsync(),AssetId和fileName为Null

问题描述 投票:0回答:1

我正在尝试使用 Appwrite 在后端上传图像。它需要诸如文件名、类型、uri、文件大小等属性。但是当我使用

ImagePicker.launchCameraAsync()
使用相机捕获图像时,它包含 uri、类型、大小等属性。但文件名和资产 ID 是
null
。当我使用
ImagePicker.launchImageLibraryAsync()
从图库中选择图像时效果很好,因为它包含所有属性的数据。这是我的代码

const takePhoto = async () => {
    const { status } = await ImagePicker.requestCameraPermissionsAsync();
    if (status !== 'granted') {
      Alert.alert('Sorry, we need camera permissions to make this work!');
      return;
    }

    const result = await ImagePicker.launchCameraAsync({
      allowsEditing: true,
      aspect: [4, 3],
      quality: 1,
    });

    console.log(result,"photo taken in camera");

这是 console.log() 输出:

{"assets": [{"assetId": null, "base64": null, "duration": null, "exif": null, "fileName": null, "fileSize": 7301631, "height": 3025, "mimeType": "image/jpeg", "type": "image", "uri": "file:///var/mobile/Containers/Data/Application/BB32C249-451A-4087-A1A4-6D58724A0FA6/Library/Caches/ExponentExperienceData/@anonymous/shoplook-03082981-c4c4-42c7-96be-7cf4d4f49be6/ImagePicker/901109CD-75B2-4E58-9BBC-8E8921D9070A.jpg", "width": 3024}], "canceled": false} photo taken in camera

如果拍摄照片,我尝试手动设置变量,但此解决方案不是最佳方案,只是临时修复。所以我需要知道这是否只是 iPhone 的问题,还是普遍存在的问题,是否有可用的修复方法。

react-native expo appwrite expo-image-picker
1个回答
0
投票

我通过设置解决了与

ImagePicker.launchImageLibraryAsync()
类似的问题
allowsEditing
属性为
false

你可以尝试同样的方法吗

ImagePicker.requestCameraPermissionsAsync()

const takePhoto = async () => {
    const { status } = await ImagePicker.requestCameraPermissionsAsync();
    if (status !== 'granted') {
      Alert.alert('Sorry, we need camera permissions to make this work!');
      return;
    }

    const result = await ImagePicker.launchCameraAsync({
      allowsEditing: false, //here
      aspect: [4, 3],
      quality: 1,
    });

    console.log(result,"photo taken in camera");
© www.soinside.com 2019 - 2024. All rights reserved.