Pues lo que dice mi titulo.
Quiero descargar un archivo diciendole en que parte del archivo ahi que empezar a descargar.
Alguna informacion?
Te quieres hacer un administrador de descargas?
A mi también me serviría el code jeje
Primero deberas crear un hilo por cada parte, segundo es obtener el tamaño total del archivo, dividirlo por el numero de partes y empizas a descargar simultaneamente (Correr los Hilos) cuando los hilos terminan tendras por cada hilo un memorystream, deberas unirlos... ya hasta me dieron ganas de hacerlo... jejejeje
Atentamente,
Juan Manuel Lombana
Medellín - Colombia
Jeje si verdad, debe ser bien interesante!!
Emm... creo yo o el tipo pregunto otra cosa :huh: jaja
Lo que yo entendi como pregunta es como decirle al servidor desde que punto descargar el archivo. Eso hay que hacerlo aun con los hilos, sino descargas tantas veces como hilos tengas :P va a ser totalmente al pedo.
Como iniciar una descarga a partir de X punto? creo que esa fue la pregunta :P (o si no lo era, es algo importante para hacer esto)
Yo entendí lo mismo :P
:http://www.geekpedia.com/tutorial196_Creating-an-advanced-download-manager-in-Csharp.html
:http://www.codeproject.com/KB/vb/downloadFileswProgressbar.aspx
Saludos
Mi intencion es bajar una pelicula de megavideo con extensión flv.
Como megavideo pone un limite de tiempo... pues e pensado en descargar el archivo partiendolo en partes y luego unirlas para tener la pelicula completa.
Estoy mirando las paginas que me as dado...
Entonces si es eso :P
El primero es en C# y el segundo en VB.net, y por lo que parece es sencillo :D
Saludos
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
'Creating the request and getting the response
Dim theResponse As HttpWebResponse
Dim theRequest As HttpWebRequest
Try 'Checks if the file exist
theRequest = WebRequest.Create(Me.txtFileName.Text)
theResponse = theRequest.GetResponse
Catch ex As Exception
MessageBox.Show("An error occurred while downloading file. Possibe causes:" & ControlChars.CrLf & _
"1) File doesn't exist" & ControlChars.CrLf & _
"2) Remote server error", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
Me.Invoke(cancelDelegate, True)
Exit Sub
End Try
Dim length As Long = theResponse.ContentLength 'Size of the response (in bytes)
Dim safedelegate As New ChangeTextsSafe(AddressOf ChangeTexts)
Me.Invoke(safedelegate, length, 0, 0, 0) 'Invoke the TreadsafeDelegate
Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Create)
'Replacement for Stream.Position (webResponse stream doesn't support seek)
Dim nRead As Integer
'To calculate the download speed
Dim speedtimer As New Stopwatch
Dim currentspeed As Double = -1
Dim readings As Integer = 0
Do
If BackgroundWorker1.CancellationPending Then 'If user abort download
Exit Do
End If
speedtimer.Start()
Dim readBytes(4095) As Byte
Dim bytesread As Integer = theResponse.GetResponseStream.Read(readBytes, 0, 4096) ******AYUDA********
nRead += bytesread
Dim percent As Short = (nRead * 100) / length
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 'For increase precision, the speed it's calculated only every five cicles
currentspeed = 20480 / (speedtimer.ElapsedMilliseconds / 1000)
speedtimer.Reset()
readings = 0
End If
Loop
'Close the streams
theResponse.GetResponseStream.Close()
writeStream.Close()
If Me.BackgroundWorker1.CancellationPending Then
IO.File.Delete(Me.whereToSave)
Dim cancelDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
Me.Invoke(cancelDelegate, True)
Exit Sub
End If
Dim completeDelegate As New DownloadCompleteSafe(AddressOf DownloadComplete)
Me.Invoke(completeDelegate, False)
End Sub
theResponse.GetResponseStream.Read(readBytes, 0, 4096) ******AYUDA********
Donde 0 es el numero donde empieza la descarga?
CitarResume Downloads
It is possible to modify the code to allow resuming downloads. Add this code before the first use of the HttpWebRequest object.
theRequest.AddRange(whereYouWantToStart) '<- add this
You'll also need to set the Position property of the FileStream instance to the position where you want to resume the download. So be sure you also save this before the download is cancelled.
Dim writeStream As New IO.FileStream(Me.whereToSave, IO.FileMode.Open)
writeStream.Position = whereYouWantToStart
Para revisar donde comenzar debes de leer el archivo anterior para ver hasta donde guardaste
Saludos
Gracias, no me fije en eso.
Estoy mirando como implementarlo.
Ah! jajaja xD
Así si! Y bueno aprovechen y pongan un listView para así puedas descargar varias al mismo tiempo.
Una colección de "Descargadores" que corren asíncronos dentro de un proceso aparte de el del formulario.
Aparte, Yo tengo una pregunta, cómo haces para saber el archivo FLV que consume flash? Porque dentro del Object de Megavideo esta:
<param name="movie" value="http://www.megavideo.com/v/3L3WGH0Q5e18db4c3db265345495b25ce9c8c7ea"></param>
Y si abres: http://www.megavideo.com/v/3L3WGH0Q5e18db4c3db265345495b25ce9c8c7ea (http://www.megavideo.com/v/3L3WGH0Q5e18db4c3db265345495b25ce9c8c7ea) Es flash.
Como sacas la dirección del archivo?
Hay una página http://clipnabber.com/ (http://clipnabber.com/) que saca el video FLV, pero no se como lo hacen, sería interesante saberlo.
Se me ocurrió una idea! Que tal si se conecta a la dirección http://www.megavideo.com/v/3L3WGH0Q5e18db4c3db265345495b25ce9c8c7ea y se comienza a descargar el Flash, seguro el flash apunta al flv y por medio de esto se puede saber de donde se está descargando.. Creo xD
Yo ya se donde se encuentra el archivo flv. Lo que intento es bajaro por partes para aprovechar ancho de banda y asi descargarlo antes de que megavideo corte la conexion.
Se donde esta el archivo flv por que tengo un addon del firefox llamado firebug el cual te dice todo lo que se carga en una web.
Me podrías decir cual es esa forma de conocer la ruta del video?
Estoy casi seguro de que es la misma velocidad, o incluso un poco más lento, si lo bajas por partes.
Lo mejor es que codifiques un DownloadManager pero como me gustó mucho la idea, estoy haciendo unas clases para descargas simultáneas, cuando la termine posteo el código.
intente parsear esto :P
Descargador Multiconexion by Leandro Ascierto (http://www.leandroascierto.com.ar/categoria/Proyectos/articulo/Descargador%20Multiconexion.php)
Muy bueno el codigo de leandro. abra que pasarlo a net