使用RN-FETCH-BLOB下载mp3文件

时间:2020-02-16 22:06:44

标签: react-native rn-fetch-blob

我正在尝试通过链接从ios下载带有rn-fetch-blob的mp3文件 https://www.myinstants.com/media/sounds/anime-wow-sound-effect-mp3cut.mp3。比起我将与react-native-share共享此文件,但我无法检索到正确的文件,因为它不是mp3文件。是whatsapp无法打开的文件。

RNFetchBlob
  .config({
    fileCache: true,
    appendExt : 'mp3'
  })
  .fetch('GET', url, {
    //some headers ..
  })
  .then((res) => {
    // the temp file path
    console.log('The file saved to ', res.path())
    const shareOptions = {
      title: 'Share via',
      message: 'Do not miss to share meme sounds',
      url: 'file://' + res.path(),
    };
    Share.share(shareOptions)
      .then((res) => console.log(res))
      .catch((err) => err && console.log(err))
  })

下载的文件返回这样的路径 / var / mobile / Containers / Data / Application / BC8BC14B-FE8B-4E2C-ACA4-799270D8972B / Documents / RNFetchBlob_tmp / RNFetchBlobTmp_m6vz8itit4jxuxpb8tabrm

如果我添加appendExt: 'mp3',它将返回类似以下内容的 /var/mobile/Containers/Data/Application/BC8BC14B-FE8B-4E2C-ACA4-799270D8972B/Documents/RNFetchBlob_tmp/RNFetchBlobTmp_m6vz8itit4jxuxpbb8tabrm.mp3 >

与我在whatapp上共享相比,这些文件就像东西一样。这不是mp3文件。这甚至不是一个文件,我都无法打开它。问题是我是否以正确的方式在ios中下载了mp3文件。如果可以,为什么看不到以.mp3扩展名结尾的路径?还是我只是以错误的方式使用了共享库,请有人启发我。 enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

我解决了这个问题。 RN-Fetch-Blob路径在iOS中并不是很好。最好这样指定路径。

let path = RNFetchBlob.fs.dirs.DocumentDir

像这样在RNFetchBlob.config的路径末尾传递要下载的文件。

 RNFetchBlob
  .config({
    fileCache: true,
    path: path + '/sound.mp3',

  })

比起是否要将文件共享给随机应用程序。像这样使用react-native-share库的 url 参数。

const shareOptions = {
      subject: 'Music',
      title: '',
      message: 'Do not miss to share meme sounds',
      url:  res.path(),
    };

url: 'file:// + res.path()url: res.path()都将在Android中正常工作。但是在我的情况下,声明不带file://的url是可行的。

答案 1 :(得分:-1)

非常感谢SelimMıdıkoğlu。多亏了您,我可以实现mp3下载功能