跨域下载文件

前面介绍了两种在WebViewer主动下载文件的方法,分别是模拟单击按钮和使用DownLoadFile函数。

两个方法都有限制,就是不能跨域。

例如窗口的AfterLoad事件代码设置为:

'''Async
Dim
wv As WebViewer = e.Form.Controls("WebViewer1").WebViewer
Await
wv.EnsureCoreWebView2Async(Nothing)
wv.CoreWebView2.Navigate(
"https://www.baidu.com/")

然后增加一个按钮,将代码设置为:

Dim wv As WebViewer = e.Form.Controls("WebViewer1").WebViewer
wv.DownLoadFile(
"http://www.foxtable.com/lib/images/banner1a.jpg", "c:\abc\banner.jpg")

单击这个按钮,WebViewer并不会下载图片,而是直接显示图片,这是因为当前域名是baidu.com,而要下载文件来自foxtable.com,二者不同域。

对于这种情况,WebViewer是无能为力的,改用HttpClient下载:

Dim http As New HttpClient("http://www.foxtable.com/lib/images/banner1a.jpg")
If
http.GetFile("c:\abc\banner.jpg") = True Then
    MessageBoxA.Show(
"下载成功")
Else

    MessageBoxA.Show(
"下载失败")
End
If

HttpClient还有一个异步下载文件的方法GetFileAsync:

'''Async
Dim
http As New HttpClient("https://dldir1v6.qq.com/weixin/Universal/Windows/WeChatWin_4.1.11.exe")
Dim
ret As Boolean = Await http.GetFileAsync("c:\abc\banner.exe")
If
ret Then
    MessageBoxA.Show(
"下载成功")
Else

    MessageBoxA.Show(
"下载失败")
End
If

HttpClient和WebViewer没有任何关系,所以不会触发WebViewer的事件。


本页地址:http://www.foxtable.com/webhelp/topics/6892.htm