1

在我的 React Native 应用程序中,我添加了一个上传多个图像的功能,这些图像将存储为 image[],包括 uri。这非常适用于 Android。

但是对于 iOS,创建的 image[] 也包含一些数据,但它与 android 完全不同。并且对于 uri 空值仅存在。

请帮我解决这个问题。!(注意: Android 不应受到更改的影响。)

提前致谢。!

图像数组:(适用于 Android)

[
  { 'file': 'content://media/external/images/media/30993',
    'size': 125434,
    'uri': 'content://media/external/images/media/30993',
    'isDirectory': false,
    'md5': '041550fe959f36d1b247bb6b2eaa3272',
    'exists': true },
  { 'file': 'content://media/external/images/media/30988',
    'size': 541148,
    'uri': 'content://media/external/images/media/30988',
    'isDirectory': false,
    'md5': '39bf35dfcf0852c5412205195a395b29',
    'exists': true
  }
]

图片数组:(对于 iOS)

[
  {
    'file': 'assets-library://asset/asset.JPG?id=C2FBB68D-2012-4696-8648-D8990F72BF77&ext=JPG',
    'size': 125434,
    'modificationTime': 1552019118.1320686,
    'uri': null,
    'isDirectory': 0,
    'md5': '041550fe959f36d1b247bb6b2eaa3272',
    'exists': 1
  },
  {
    'file': 'assets-library://asset/asset.JPG?id=98EBA95A-254E-40F4-8E1D-C355D8795777&ext=JPG',
    'size': 541148,
    'modificationTime': 1552019117.7241733,
    'uri': null,
    'isDirectory': 0,
    'md5': '39bf35dfcf0852c5412205195a395b29',
    'exists': 1
  }
]

[更新]

我需要从此 url 'assets-library://asset/asset.JPG?id=98EBA95A-254E-40F4-8E1D-C355D8795777&ext=JPG' 获取绝对文件路径,类似于 'content://media/外部/图像/媒体/30988'。

请帮我解决这个问题。!

提前致谢。!

4

1 回答 1

1

我有这个完全相同的问题。

解决方案是将 uri 设置为“文件”属性。

这是您可以为 iOS 和 Android 正确地将图像附加到 formData 中的方法:

        let uri = image.file;

        // extract the filetype
        let fileType = uri.substring(uri.lastIndexOf(".") + 1);

        formData.append('uploads[]', {
            uri,
            name: `photo.${fileType}`,
            type: `image/${fileType}`,
        });

此时不能删除iOS文件名“?id=98EBA95A-254E-40F4-8E1D-C355D8795777&ext=JPG'”上的附加数据,否则无法上传。不过,您可以在服务器端将其删除。

于 2020-04-20T06:23:16.777 回答