Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida com FileStream e Download de arquivos


LordLuc

Pergunta

Eu peguei um source code de um "Downloader" no site da macoratti e fiz umas modificações para um uso , preciso que se o arquivo exista continue o download, irei usar em outro programa mas to tentando modificar esse para ver como fazer.

O Downloader usa um filestream e cria o arquivo e o baixa e salva enquanto baixa se parar o down o arquivo fica pela metade, se fechar o programa o arquivo tambem fica onde estava baixando com os bytes que já tinham sido baixados, eu queria que quando tentasse baixar dnv o downloader lesse os bytes do arquivo e continuasse a baixá-lo de onde parou, com umas modificações consegui continuar a salvar o arquivo apenas adicionando os bytes a ele mas o down ultrapassa a qtd de bytes que deveria ter, tipo ele baixa o arquivo do começo mas invés de criar outro apenas aumenta, eu queria exatamente isso mas invés de o downloader ler o arquivo da net e baixa-lo totalmente, baixar da onde parou e adicionar os btyes ao arquivo já existente, abaixo um pouco das modificações, já fiz muitas e n deu kk ( criei um potão de pause do down que apenas pausa o Loop, não serve para dar "resume" após o programa ser fechado:

Me.btDownload.Enabled = False

Dim theResponse As HttpWebResponse

Dim theRequest As HttpWebRequest

Try

theRequest = WebRequest.Create(Me.txtNomeArquivo.Text)

theResponse = theRequest.GetResponse

Catch ex As Exception

MessageBox.Show("Um erro ocorreu durante o download do arquivo. Possíveis causas :" & ControlChars.CrLf & _

"1) Arquivo não existe" & ControlChars.CrLf & _

"2) Erro no sevidor remoto ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

Dim cancelDelegate As New DownloadCompletoSafe(AddressOf DownloadComplete)

Me.Invoke(cancelDelegate, True)

Exit Sub

End Try

Dim length As Long = theResponse.ContentLength

Dim safedelegate As New AlterarTextosSafe(AddressOf AlterarTextos)

Me.Invoke(safedelegate, length, 0, 0, 0)

Dim nRead As Integer

Dim speedtimer As New Stopwatch

Dim currentspeed As Double = -1

Dim readings As Integer = 0

If Dir(Me.whereToSave) <> "" Then

Dim writeStream2 As New IO.FileStream(Me.whereToSave, IO.FileMode.Open, IO.FileAccess.Read)

nRead = writeStream2.Length

writeStream2.Close()

End If

Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Append)

Do

If BackgroundWorker1.CancellationPending Then

Exit Do

End If

If Not Button1.Text = "Resume" Then

speedtimer.Start()

Dim readBytes(4095) As Byte

Dim bytesread As Integer = theResponse.GetResponseStream.Read(readBytes, 0, 4096)

nRead += bytesread

Dim percent As Short = (nRead / length) * 100

Me.Invoke(safedelegate, length, nRead, percent, currentspeed)

If bytesread = 0 Then Exit Do

writeStream.Write(readBytes, 0, bytesread)

speedtimer.Stop()

readings += 1

If readings >= 5 Then

currentspeed = 20480 / (speedtimer.ElapsedMilliseconds / 1000)

speedtimer.Reset()

readings = 0

End If

End If

Loop

theResponse.GetResponseStream.Close()

writeStream.Close()

If Me.BackgroundWorker1.CancellationPending Then

IO.File.Delete(Me.whereToSave)

Dim cancelDelegate As New DownloadCompletoSafe(AddressOf DownloadComplete)

Me.Invoke(cancelDelegate, True)

Exit Sub

End If

Dim completeDelegate As New DownloadCompletoSafe(AddressOf DownloadComplete)

Me.Invoke(completeDelegate, False)

Aguardo respostas.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...