如何在android中使用web视图包通过react native下载pdf



在这里您可以看到web视图组件。页面加载时点击href标签文件需要在android 中下载

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

我认为您应该在不使用webview的情况下更改逻辑。在本机语言(Swift/Java(中,WebView也有类似的问题,这意味着我们无法用react native WebView、实现该功能

所以请尝试使用rn获取blob。我想建议你"rn提取斑点";下载该文件,并使用";fs";。

也许你可以在文件系统中获取本地url。

然后,在webview上加载带有上述本地url的文件。

我想在这里提到,请检查您的Content-Disposition响应标头值。如果它是inline,那么它将不会被下载,您必须使用rn-fetch-blob软件包手动进行下载,或者您可以根据您的URL提供的内容进行渲染。如果它是attachment,那么react原生webview将自动为您下载它,而不需要任何额外的代码。

上述行为在iOS中的作用不同,因为它不处理内容处置标头,因此与Android不同,所有文件格式都将在iOS Webview中呈现,而无需下载。

这可能会有所帮助:

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

最新更新