下载
本指南将介绍如何管理文件下载、跟踪下载进度、获取下载完成通知等。
概述
要管理与特定 Profile
关联的文件下载,请使用以下方法:
IDownloads downloads = engine.Profiles.Default.Downloads;
Dim downloads As IDownloads = engine.Profiles.Default.Downloads
使用 IEngine.Downloads
您将获得默认配置文件的下载服务。
每次 DotNetBrowser 需要下载文件时,都会使用 StartDownloadHandler
。 在此处理程序中,您可以决定是应该下载文件还是必须取消下载请求。
下面的代码示例演示了如何取消所有下载请求:
browser.StartDownloadHandler =
new Handler<StartDownloadParameters, StartDownloadResponse>(p =>
{
return StartDownloadResponse.Cancel();
});
browser.StartDownloadHandler =
New Handler(Of StartDownloadParameters, StartDownloadResponse)(Function(p)
Return StartDownloadResponse.Cancel()
End Function)
默认情况下,所有下载请求都将被取消。
接受下载
要改变默认行为并允许下载文件,请使用以下方法:
browser.StartDownloadHandler =
new Handler<StartDownloadParameters, StartDownloadResponse>((p) =>
{
return StartDownloadResponse.DownloadTo(Path.Combine(Path.GetTempPath(),
p.Download.Info.SuggestedFileName));
});
browser.StartDownloadHandler =
New Handler(Of StartDownloadParameters, StartDownloadResponse)(Function(p)
Return StartDownloadResponse.DownloadTo(Path.Combine(Path.GetTempPath(),
p.Download.Info.SuggestedFileName))
End Function)
在上面的代码示例中,我们告诉库文件可以下载并保存到给定的目标文件。
确保 Chromium 主进程有权在所提供的目标目录中创建文件。 如果给定目录中已有同名文件,则该文件将被自动覆盖。 我们建议在接受文件下载之前检查权限和文件是否存在。
控制下载进程
要控制下载进程,请使用通过 StartDownloadHandler
获取的 IDownload
实例。
暂停下载
要暂停下载,请使用 IDownload.Pause()
方法:
download.Pause();
download.Pause()
恢复下载
要恢复暂停的下载,请使用 IDownload.Resume()
方法:
if (download.IsPaused) {
download.Resume();
}
If download.IsPaused Then
download.Resume()
End If
取消下载
除非下载处于终止状态,否则您可以随时取消下载。 这包括成功完成的下载、取消的下载和无法恢复的中断下载。 要确定下载是否处于终止状态,请使用 IDownload.State
属性。 要取消下载,请使用 IDownload.Cancel()
方法,如以下代码示例所示:
if (download.State != DownloadState.Complete) {
download.Cancel();
}
If download.State <> DownloadState.Complete Then
download.Cancel()
End If
下载事件
您可以跟踪下载进度,在下载取消、暂停、中断或完成时收到通知。
下载取消事件
要在 IDownload
取消时获得通知,请使用 Canceled
事件:
download.Canceled += (s, e) => { };
AddHandler download.Canceled, Sub(s, e)
End Sub
下载完成事件
要在 IDownload
完成时获得通知,请使用 Finished
事件:
download.Finished += (s, e) => { };
AddHandler download.Finished, Sub(s, e)
End Sub
下载暂停事件
要在 IDownload
暂停时获得通知,请使用 Paused
事件:
download.Paused += (s, e) => { };
AddHandler download.Paused, Sub(s, e)
End Sub
下载更新事件
要跟踪下载进度,请使用 Updated
事件:
download.Updated += (s, e) =>
{
// 获取下载进度百分比。
float progress = e.Progress;
// 当前下载速度估计值(字节/秒)。
long currentSpeed = e.CurrentSpeed;
// 文件的总大小(以字节为单位)。
long totalBytes = e.TotalBytes;
// 接收(下载)的字节数。
long receivedBytes = e.ReceivedBytes;
};
AddHandler download.Updated, Sub(s, e)
' 获取下载进度百分比。
Dim progress As Single = e.Progress
' 当前下载速度估计值(字节/秒)。
Dim currentSpeed As Long = e.CurrentSpeed
' 文件的总大小(以字节为单位)。
Dim totalBytes As Long = e.TotalBytes
' 接收(下载)的字节数。
Dim receivedBytes As Long = e.ReceivedBytes
End Sub
下载中断事件
要在 Download
由于某种原因中断时获得通知,请使用 Interrupted
事件:
download.Interrupted += (s, e) =>
{
// 中断原因,如文件访问被拒绝、网络故障等。
DownloadInterruptionReason reason = e.InterruptionReason;
};
AddHandler download.Interrupted, Sub(s, e)
' 中断原因,如文件访问被拒绝,网络故障等。
Dim reason As DownloadInterruptionReason = e.InterruptionReason
End Sub