Downloads

Este guia descreve como gerir as transferências de arquivos (download), acompanhar o progresso da transferência, obter a notificação da conclusão da transferência, etc.

Visão geral

Para gerir os downloads de arquivos associados a um perfil específico, utilize a seguinte abordagem:

IDownloads downloads = engine.Profiles.Default.Downloads;
Dim downloads As IDownloads = engine.Profiles.Default.Downloads

Utilizando IEngine.Downloads, você obterá o serviço de download para o perfil predefinido.

Sempre que o DotNetBrowser precisa baixar um arquivo, o StartDownloadHandler é utilizado. Neste handler, é possível decidir se o arquivo deve ser baixado ou o pedido deeve ser cancelado.

O exemplo de código abaixo demonstra como cancelar todos os pedidos de download:

browser.StartDownloadHandler = 
    new Handler<StartDownloadParameters, StartDownloadResponse>(p =>
    {
        return StartDownloadResponse.Cancel();
    });
browser.StartDownloadHandler = 
    New Handler(Of StartDownloadParameters, StartDownloadResponse)(Function(p)
        Return StartDownloadResponse.Cancel()
    End Function)

Por padrão, todos os pedidos de download são cancelados.

Aceitar um download

Para alterar o comportamento predefinido e permitir a transferência de um arquivo, utilize a seguinte abordagem:

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)

No exemplo de código acima, dizemos à biblioteca que o arquivo pode ser baixado e salvo numa determinada pasta de destino.

Certifique-se de que o processo principal do Chromium tem direitos para criar arquivos na pasta de destino fornecido. Se a pasta fornecida já tiver um arquivo com o mesmo nome, o arquivo será substituído automaticamente. Recomendamos que verifique os direitos e a existência do arquivo antes de aceitar a transferência do arquivo.

Controlar um processo de download

Para controlar o processo de download, utilize a instância IDownload que pode ser obtida utilizando o StartDownloadHandler.

Colocar um download em pausa

Para fazer uma pausa no download, utilize o método IDownload.Pause():

download.Pause();
download.Pause()

Retomar um download

Para retomar a transferência em pausa, utilize o método IDownload.Resume() :

if (download.IsPaused) {
    download.Resume();
}
If download.IsPaused Then
    download.Resume()
End If

Cancelar um download

Pode cancelar um download em qualquer momento, a menos que esta esteja num estado terminal. Isto inclui as downloads concluídos com êxito, os downloads cancelados e os downloads interrompidos que não podem ser retomados. Para saber se o download está no estado terminal, utilize a propriedade IDownload.State . Para cancelar o download, utilize o método IDownload.Cancel(), como mostra o exemplo de código abaixo:

if (download.State != DownloadState.Complete) {
    download.Cancel();
}
If download.State <> DownloadState.Complete Then
    download.Cancel()
End If

Eventos de download

Voê pode acompanhar o progresso do download, receber notificações quando o download é cancelado, colocado em pausa, interrompido ou concluído.

Evento de download cancelado

Para receber notificações quando o IDownload for cancelado, utilize o evento Canceled :

download.Canceled += (s, e) => { };
AddHandler download.Canceled, Sub(s, e)
End Sub

Evento de download concluído

Para receber notificações quando o IDownload estiver concluído, utilize o evento Finished :

download.Finished += (s, e) => { };
AddHandler download.Finished, Sub(s, e)
End Sub

Evento de download pausado

Para receber notificações quando o IDownload estiver em pausa, utilize o evento Paused :

download.Paused += (s, e) => { };
AddHandler download.Paused, Sub(s, e)
End Sub

Evento de download atualizado

Para acompanhar o progresso de download, utilize o evento Updated:

download.Updated += (s, e) =>
{
    // Obtém o progresso do download em porcentagens.
    float progress = e.Progress;
    // A estimativa atual da velocidade de download em bytes/segundo.
    long currentSpeed = e.CurrentSpeed;
    // O tamanho total de um arquivo em bytes.
    long totalBytes = e.TotalBytes;
    // O número de bytes recebidos (baixados).
    long receivedBytes = e.ReceivedBytes;
};
AddHandler download.Updated, Sub(s, e)
    ' Obter o progresso do download em porcentagens.
    Dim progress As Single = e.Progress
    ' A estimativa da velocidade atual de download em bytes/segundo.
    Dim currentSpeed As Long = e.CurrentSpeed
    ' O tamanho total de um arquivo em bytes.
    Dim totalBytes As Long = e.TotalBytes
    ' O número de bytes recebidos (baixados).
    Dim receivedBytes As Long = e.ReceivedBytes
End Sub

Evento de download interrompido

Para receber notificações quando o Download for interrompido por algum motivo, utilize o evento Interrupted :

download.Interrupted += (s, e) =>
{
    // O motivo da interrupção, como acesso negado ao arquivo, falha na rede, etc.
    DownloadInterruptionReason reason = e.InterruptionReason;
};
AddHandler download.Interrupted, Sub(s, e)
    ' O motivo da interrupção, como acesso negado ao arquivo, falha na rede, etc.
    Dim reason As DownloadInterruptionReason = e.InterruptionReason
End Sub
Go Top