Search code examples
iosreact-nativern-fetch-blob

RN fetch blob download docx or pdf from URL in IOS


What is done:

Implemented in Android and its getting downloaded in specific DCIM directory in android. In ios using DocumentDir to download the pdf or docx file. Using "rn-fetch-blob": "^0.12.0";

Error:

In IOS it says the message in console :

The file saved to /var/mobile/Containers/Data/Application/E6FDC2DD-7FCA-44DC-85C4-A275078F8825/Documents/wow13.pdf

The code to download is something like this :

downloadFileOnSuccess = async () => {
    let dirs =
      Platform.OS == 'ios'
        ? RNFetchBlob.fs.dirs.DocumentDir
        : RNFetchBlob.fs.dirs.DCIMDir;
    console.log(dirs, 'document path');
    RNFetchBlob.config({
      // response data will be saved to this path if it has access right.

      fileCache: true,
      path: dirs + `/wow13.pdf`,
    })
      .fetch(
        'GET',
        'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
        {
          //some headers ..
        },
      )
      .then(res => {
        // the path should be dirs.DocumentDir + 'path-to-file.anything'
        console.log('The file saved to ', res.path());
      });
  };

But i cannot get where the file is downloaded in my iphone 7 real device. Is there any permission i'm missing in IOS? Havent added any permission for IOS.


Solution

  • Thanks to pruthvi, i got the answer , for ios i need to prompt the user:

    .then(resp => {
          if (Platform.OS === "ios") {
            RNFetchBlob.ios.openDocument(resp.data);
          }
        })
    

    hope it helps you guys