2

我正在尝试从链接 https://www.myinstants.com/media/sounds/anime-wow-sound-effect-mp3cut.mp3在 ios 中下载带有 rn-fetch-blob 的 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_m6vz8itit4jxuxpb8tabrm.mp3

如果我在whatapp上分享它,我会得到这些文件之类的东西。这不是 mp3 文件。这甚至不是我无法打开的文件。问题是我在ios中以正确的方式下载mp3文件吗?如果我这样做了,为什么我看不到以 .mp3 扩展名结尾的路径?或者我只是以错误的方式使用共享库请有人启发我。 在此处输入图像描述

在此处输入图像描述

4

1 回答 1

2

我解决了这个问题。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 中正常工作。但在我的情况下,没有声明 urlfile://是有效的。

于 2020-02-17T02:56:20.783 回答