文件下载在react native for IOS中不工作

dfty9e19  于 2023-10-22  发布在  React
关注(0)|答案(3)|浏览(129)

我正在使用“react-native-fetch-blob”版本0.10.8来下载react-native中的文件。这在android上是可以预期的。我可以像预期的那样下载文件。至于iOS,我无法下载文件。
下面是我使用的代码。

downloadFinalBlog() {
const { config, fs } = RNFetchBlob;
let PictureDir = fs.dirs.PictureDir; 
let options = {
  fileCache: true,
  addAndroidDownloads: {
    useDownloadManager: true, 
    notification: false,
    title: "Great ! Download Success ! :",
    mime: "application/pdf",
      description: "Final Blog"
  }
};
config(options)
   .fetch("GET", "http://www.example.com/example.pdf")

  .then(res => {
     console.log(res);

  }).catch((error) => {

    console.log(error);
  });

}
任何人都可以建议我是否有任何其他方式来下载文件在IOS中的React Native。

col17t5w

col17t5w1#

他已经得到了这个问题的答案,但忘了在这里回答。
对于iOS,我们需要在then内部使用openDocument,它会提示用户将文件保存到所有可用的应用程序中。
请使用以下代码:

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

bnlyeluc2#

对于iOS,使用react-native-share模块代替RNFetchBlob.ios.openDocument(resp.data);
I have mentioned at here.

b09cbbtk

b09cbbtk3#

这是由于应用程序传输安全。您的下载链接是在不安全的http协议。您必须在Info. plist中设置例外。即使在生产构建中也会保留此异常。在project-directory/ios/project-name/Info.plist中添加以下行

<key>example.com</key>
<dict>
  <key>NSExceptionAllowsInsecureHTTPLoads</key>
	<true/>
</dict>

现在,NSAppTransportSecurity密钥必须如下所示

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
	<dict>
		<key>example.com</key>
		<dict>
			<key>NSExceptionAllowsInsecureHTTPLoads</key>
			<true/>
		</dict>
    <key>localhost</key>
		<dict>
			<key>NSExceptionAllowsInsecureHTTPLoads</key>
			<true/>
		</dict>
	</dict>
</dict>

相关问题