(ayuda) enviar archivos vb6

Iniciado por Psyke1, 22 Marzo 2010, 18:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Psyke1

Hola a to2!! les cuento mi problema:

Estoy intentando descargar un archivo remoto y que me muestre su progreso en una progressbar. Pero algo debo
de hacer mal, y no tengo muy claro para poner el progreso la PB.
No puede ser muy dificil, lo que hago actualmente es:


CLIENT

Private Sub Download_Click()  

   WS.SendData "download" & Ruta.Caption

End Sub


SERVER

   If Left(datos, 8) = "download" Then
   datos = Mid(datos, 9)

   tamaño = FileLen(datos)

   WS.SendData "dtam" & tamaño

   End If


CLIENT

   If Left(datos, 4) = "dtam" Then
   datos = Mid(datos, 5)

   PB.Max = datos
   'MsgBox PB.Max

  WS.SendData "dok" & Ruta.Caption

  End If


SERVER


   If Left(datos, 3) = "dok" Then
   datos = Mid(datos, 4)

  'aki debe de estar el fallo
  Dim filedata As String

  Open datos For Binary As #1
  filedata = Input(LOF(1), 1)
  Close #1

  WS.SendData "dongo" & filedata

   End If


CLIENT


   If Left(datos, 6) = "downgo" Then
   datos = Mid(datos, 7)

   Open App.path & "\miArchivo" For Binary As #1
   Put #1, , datos
   Close

   MsgBox "descarga completada"

   End If


Agradeceria mucho cualquier ayuda!!
Gracias amigos!!

tkows

Mira, puedes jugar con el evento SendProgress para saber el progreso del archivo (Lo que haces no tiene mucho sentido pues le estas enviando constantemente el valor de los datos recibidos y se lo estableces al máximo. Podrías hacer que antes de enviar el archivo mirase la longitud de este, le asignas ese valor máximo a la barra y como lo haces ahora pero cambiandole el valor .value no el .max.)

Si quieres mirar lo del evento SendProgress: Aquí tienes un buen código de ejemplo.

Un saludo.

Nanoc

Supongo que para enviar el archivo el cliente (cuando lo recibe) tiene que conocer el tamaño del archivo que va a recibir, en ese caso, cuando recibas una parte del archivo (en el evento data arrival) coloca un contador (definido como global ojo) y ve agregandole el valor de BytesTotal que te proporciona winsock, usa el control progress bar que viene con VB6 y colocale como maximo el tamaño de archivo y los valores de progreso del contador que definiste.

Si tienes problemas dimelo y te paso parte del code del cliente de mi troyano en curso

Psyke1

pero...
no es lo que hago ya?? :huh:


1.-el cliente envia el nomgre y ruta del archivo
2.-el server calcula el tamaño y se lo envia al client
3.-el cliente establece el maximo de la PB con los Bytes del archivo y pide iniciar descarga
4.-el server abre el archivo y lo envia
5.-el client lo recive y lo guarda


keda lo del PB pero deberia funcionar igual, no???
perdonarme pero sigo sin ver el fallo... :-(

gracias por la ayuda!!

Nanoc

Parto de la base de que la descarga del fichero funciona bien y lo que falla es la barra de progreso

No has pensado que hay que actualizar el valor de la barra cada vez que se reciba una parte del archivo?

brcounter = brcounter + bytesTotal
PB.Value = brcounter


Donde brcounter almacena la cantidad de bytes recibidos (deberias de tener algo parecido en tu code, pero no lo veo)