iosreact-nativereact-native-ioscamera-roll

react native - Camera Roll returned uri does not have file's extension


React native has a good lib like CameraRoll which allow us to access the media files of phones. However, the returned uri is missing the extension:

{ node: 
  { timestamp: 1344461389.8,
   type: 'image', <= it is used to be 'image/png' instead of 'image'
   group_name: 'Camera Roll',
   location: 
    { altitude: 0,
      longitude: -14.538611666666666,
      latitude: 64.752895,
      heading: 0,
      speed: 0.8999988197665498 },
   image: 
    { width: 1668,
      uri: 'ph://99D53A1F-FEEF-40E1-8BB3-7DD55A43C8B7/L0/001', <= there is no file's extension
      height: 2500,
      isStored: true,
      playableDuration: 0 } } },

If you know a way to get the extension or any work around in this case, please let me know.

Thank you in advance!


Solution

  • I have a work around, the returned extension is not pretty but it is useable:

    From the file RNCCameraRollManager.m:

    Please add these 2 lines

    NSString *const extension = [asset valueForKey: @"uniformTypeIdentifier"];
    

    enter image description here

    and

    @"extension": extension,
    

    enter image description here

    Now you have the extension.

    Here is the environment:

    "@react-native-community/cameraroll": "1.0.3",
    "react": "16.8.3",
    "react-native": "0.59.5"