我正在尝试通过链接从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扩展名结尾的路径?还是我只是以错误的方式使用了共享库,请有人启发我。
答案 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下载功能