如何使用React native在Webview中下载base64编码链接文件

pwuypxnk  于 2023-05-01  发布在  React
关注(0)|答案(1)|浏览(271)

我们有下载链接与base64编码的字符串在href与下载属性,这在浏览器中工作良好,但在Webview它给出错误的列表。
下面是webview代码

<WebView style={styles.WebView}
        useWebKit={true}
        source={{ uri: url }}
        javaScriptEnabled={true}
        domStorageEnabled={true}
        decelerationRate="normal"
        startInLoadingState={true}
        // originWhitelist={['*']}
        originWhitelist={['http://*','https://*', 'git://*',"file://"]}
        mixedContentMode="compatibility"
        injectedJavaScript={INJECTEDJAVASCRIPT}
        mediaPlaybackRequiresUserAction={false}
        allowsInlineMediaPlayback={true}
        allowFileAccess={true}
        allowUniversalAccessFromFileURLs={true}
        onNavigationStateChange={
          (newNavState) => {
            console.log('TEST');
        }

      }

    // onShouldStartLoadWithRequest={this.onLoadStart}

    />

这是我得到的错误

我如何拦截链接并解码base64字符串到文件并保存在移动的上?谢谢。

sdnqo3pr

sdnqo3pr1#

你为此挣扎过吗?有类似的问题-看起来不可能在WebView base64编码的uri中提供服务,以及本地file://urls。
我已经有了变通方法,允许“共享”文件,所以我可以在浏览器中打开它:

import * as FileSystem from 'expo-file-system';
    import * as Sharing from "expo-sharing";

    ...

    const pdfUri = `${FileSystem.cacheDirectory}file.pdf`;
    try {
      await FileSystem.writeAsStringAsync(pdfUri, base64String, {
        encoding: FileSystem.EncodingType.Base64,
      });
    } catch (e) {
      console.log(e)
    }

    const localUrl = Platform.OS === 'ios' ? pdfUri : `file://${pdfUri}`;

    Sharing.shareAsync(localUrl);

相关问题