在这里您可以看到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)
}
}}
/>