Visual Basic.NET - WriteByte en FtpWebResponse

   
Vista:

WriteByte en FtpWebResponse

Publicado por Cristian (36 intervenciones) el 06/02/2015 20:36:38
Hola estoy subiendo archivos con ftp y necesito utilizar un progressbar.
de forma local lo hago de esta manera:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim fi As New IO.FileInfo(v_nomfinal)
            Dim sr As New IO.FileStream("C:\diario\" + v_nomfinal, IO.FileMode.Open)
 
            Dim sw As New IO.FileStream("ftp://ftp.server.net/public_html/pruebavb/nota/" + v_nomfinal, IO.FileMode.Open)
 
 
            Dim len As Long = sr.Length - 1
            For i As Long = 0 To len
                sw.WriteByte(sr.ReadByte)
                If i Mod 1000 = 0 Then
                    ProgressBar1.Value = i * 100 / len()
                    Application.DoEvents()
                End If
            Next
            ProgressBar1.Value = 0
            sr.Close()
            sw.Close()

Ahora bien vi que FileStream es para uso local, que debo usar FtpWebResponse, pero no logro hacerlo funcionar ya que por ejemplo no cuenta con WriteByte para calcular el paso del archivo.

Espero haber sido claro y me puedan ayudar.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

WriteByte en FtpWebResponse

Publicado por Miguel (348 intervenciones) el 06/02/2015 22:57:24
Hola,

Has intentado usar "UploadFile/UploadFileAsync" de System.Net.WebClient? Prueba con esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private WithEvents wc As New System.Net.WebClient
 
        Private Sub wc_uploadProgressChanged(sender As Object, e As Net.UploadProgressChangedEventArgs) Handles wc.UploadProgressChanged
            Progressbar1.Minimum = 0
            Progressbar1.Maximum = 100
            Progressbar1.value = e.ProgressPercentage
        End Sub
 
        Private Sub wc_uploadFileCompleted(sender As Object, e As Net.UploadFileCompletedEventArgs) Handles wc.UploadFileCompleted
            If e.Cancelled = True Then
                MsgBox("Se ha cancelado la operación", MsgBoxStyle.Exclamation, "Cancelado")
            Else
                MsgBox("Se ha completado la operación", MsgBoxStyle.Information, "Completado")
            End If
        End Sub
 
        Private Sub subirArchivo(ftp As String, miArchivo As String)
            Dim uri As New Uri(ftp)
            wc.UploadFileAsync(uri, miArchivo)
        End Sub
 
        Private Sub cancelar()
            wc.CancelAsync()
        End Sub


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WriteByte en FtpWebResponse

Publicado por Cristian (36 intervenciones) el 08/02/2015 00:03:39
Hola Miguel... gracias por la data, creo que es parecido pero mas sencillo de lo que usaba yo, pero en este caso no se como pasarles las credenciales del host.
Te muestro el codigo que usaba para subir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim miUri2 As String = "ftp://ftp.server.net/public_html/pruebavb/portada/" + v_nomfinal
        Dim miRequest2 As Net.FtpWebRequest = Net.WebRequest.Create(miUri2)
 
        miRequest2.Credentials = New Net.NetworkCredential("usuario", "pass")
 
        miRequest2.Method = Net.WebRequestMethods.Ftp.UploadFile
        Try
 
            Dim bFile2() As Byte = System.IO.File.ReadAllBytes("C:\diario2\" + v_nomfinal)
            Dim miStream2 As System.IO.Stream = miRequest2.GetRequestStream()
            miStream2.Write(bFile2, 0, bFile2.Length)
            miStream2.Close()
            miStream2.Dispose()
        Catch ex As Exception
            Throw New Exception(ex.Message & ". El Archivo no pudo ser enviado.")
        End Try

Tendria que agregarle a esto el progress pero no se como, o bien pasarle las credenciales al codigo que me pasaste que tampoco se como hacerlo y no lo he encontrado.

Saludos y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WriteByte en FtpWebResponse

Publicado por Miguel (348 intervenciones) el 08/02/2015 04:01:52
Hola, pasarle las credenciales es fácil; cambia la funcion "subirArchivo" por esta nueva:

1
2
3
4
5
6
Private Sub subirArchivo(ftp As String, miArchivo As String, usuario As String, contraseña As String)
        Dim credenciales As New Net.NetworkCredential(usuario, contraseña)
        wc.Credentials = credenciales
        Dim uri As New Uri(ftp)
        wc.UploadFileAsync(uri, miArchivo)
    End Sub


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WriteByte en FtpWebResponse

Publicado por Cristian (36 intervenciones) el 08/02/2015 19:27:59
Hola Miguel..... muchas gracias por la respuesta.
Justo habia logrado el tema de las credenciales, pero la verdad no me funciona, no solo no me copia sino que tampoco funciona el progress.

Gracias por tu tiempo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WriteByte en FtpWebResponse

Publicado por Miguel (348 intervenciones) el 09/02/2015 16:57:36
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

WriteByte en FtpWebResponse

Publicado por Cristian (36 intervenciones) el 09/02/2015 17:47:01
Gracias Miguel, lo voy a probar y te comento.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar