none
Guardar archivo descargado RRS feed

  • Pregunta

  • Hola:

    Ayer encontré un trozo de código para descargar un fichero y lo he hestado modificando para mis necesidades, pero de ninguna forma consigo guardar ese archivo.

    Aquí está el código:

        Private Async Function DownloadWithProgress(ByVal url As String, path As String, ByVal p As ProgressBar, labeldata As Label, labelporcentaje As Label) As Task(Of Byte())
    
            Dim wc As Net.HttpWebRequest = DirectCast(Net.HttpWebRequest.Create(url), Net.HttpWebRequest)
            Dim resp = Await (New TaskFactory(Of Net.WebResponse)).StartNew(AddressOf wc.GetResponse)
            p.Value = 0
            p.Maximum = CInt(resp.ContentLength)
            Dim rqs = resp.GetResponseStream
    
            System.IO.File.Delete(path)
            Dim FileStream As Stream = New FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read)
            Dim bufsize As Integer = 1 << 16
            Dim buffer(bufsize) As Byte
            Dim got As Integer = 0
            Dim total As Integer = 0
            Do
                got = Await (New TaskFactory(Of Integer)).FromAsync(AddressOf rqs.BeginRead, AddressOf rqs.EndRead, buffer, 0, bufsize, Nothing)
                total += got
                labeldata.Text = Decimal.Round(CDec(total.ToString / 1024 ^ 2), 2) & "/" & Decimal.Round(CDec(p.Maximum / 1024 ^ 2), 2) & "MB"
                p.Increment(got)
                labelporcentaje.Text = Int((total.ToString / p.Maximum) * 100)
    
            Loop Until got = 0
            Return buffer
    
        End Function

    ¿Alguna sugerencia? (Nota: El fichero a descargar pesa 7.8 MB y es un zip)

    Gracias



    • Editado alecamar jueves, 4 de junio de 2015 16:35 Aclaración
    • Cambiado Enrique M. Montejo viernes, 5 de junio de 2015 12:08 Desarrollo web
    jueves, 4 de junio de 2015 13:39

Respuestas

  • Hola Amigo:

    Intenta esto:

    If Not System.IO.File.Exists("C:\foo\somefile.txt") = True Then
        Dim file As System.IO.FileStream
        file = System.IO.File.Create("C:\foo\somefile.txt")
        file.Close()
    End If
    My.Computer.FileSystem.WriteAllText("C:\foo\somefile.txt", "Some text")
    

    If you want to copy or move a file, I think you'll want something like:

    System.IO.File.Copy("C:\foo\somefile.txt", "C:\bar\somefile.txt")
    

    or

    System.IO.File.Move("C:\foo\somefile.txt", "C:\bar\somefile.txt")

    Saludos

    lunes, 8 de junio de 2015 21:15

Todas las respuestas

  • Hola Amigo:

    Intenta esto:

    If Not System.IO.File.Exists("C:\foo\somefile.txt") = True Then
        Dim file As System.IO.FileStream
        file = System.IO.File.Create("C:\foo\somefile.txt")
        file.Close()
    End If
    My.Computer.FileSystem.WriteAllText("C:\foo\somefile.txt", "Some text")
    

    If you want to copy or move a file, I think you'll want something like:

    System.IO.File.Copy("C:\foo\somefile.txt", "C:\bar\somefile.txt")
    

    or

    System.IO.File.Move("C:\foo\somefile.txt", "C:\bar\somefile.txt")

    Saludos

    lunes, 8 de junio de 2015 21:15
  • hola

    pero estas realizando un desarrollo web, con asp.net ?

    un desarrolo web de por si ya usa los thread del sitio web en el iis

    no entiendo como quiere reportar un "progress" cuando desde el servidor no puedes indicar al cliente cuanto se avanza en la tarea

    si lo hicieras deberias usar SignalR

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    lunes, 8 de junio de 2015 21:43