reactjs 如何下载pdf在android通过react原生使用网页查看包?

3duebb1j  于 2023-01-04  发布在  React
关注(0)|答案(3)|浏览(283)

在这里你可以看到网页视图组件。当页面加载点击href标记文件需要下载在android

<WebView
    ref={webViewRef}
    style={styles.webv}
    source={{
      uri: {{Domain_URL}},
    }}
    onMessage={onWebViewMessage}
    onError={onWebViewError}
    onLoadStart={onWebViewLoadStart}
    onLoad={onWebViewLoadEnd}
    javaScriptEnabled
    domStorageEnabled
    setBuiltInZoomControls={false}
  />
oogrdqng

oogrdqng1#

我认为你应该在不使用webview的情况下改变逻辑。在本地语言(Swift/Java)中,WebView也有类似的问题,这意味着我们无法使用react-native-webview实现该功能。
所以,请尝试与rn-fetch-blob.我想建议你“rn-fetch-blob”下载文件,并使用“fs”存储在Android文件系统.
也许你可以得到文件系统中的本地网址。
然后,在webview上加载带有上述本地url的文件。

j8ag8udp

j8ag8udp2#

我想在这里提一下,请检查您的Content-Disposition响应头值。如果它是inline,那么它将不会被下载,您将不得不使用rn-fetch-blob包手动完成它,或者您将能够根据您的URL提供渲染它。如果它是attachment,那么react-native-webview将自动为您下载它,而无需任何额外的代码。
上述行为在iOS中的工作方式不同,因为它不处理Content-Disposition标头,因此所有文件格式都将在iOS Webview中呈现,而无需下载,这与Android不同。

nfeuvbwi

nfeuvbwi3#

这可能会有所帮助:

<WebView
        onFileDownload={({ nativeEvent: { downloadUrl } }) => {
            if (downloadUrl) {
                Linking.openURL(downloadUrl)
            }
        }}
    />

相关问题