Uploader a la racine d'un site via ftp [Résolu]

Signaler
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013
-
Attila54
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013
-
Bonjour,
J'ai une appli qui, apres calculs, sauvegarde un .xls (toto.xls)dans un repertoire de mon DD (mes documents/fiches)
Sur un form de cette appli, je voudrais, via un bouton "upload" aller chercher ce .xls et l'uploader dans un repertoire "fiches" a la racine d'un site dont l'acces via ftp est : ftp.cluster006.ovh.net avec bien sur login et password

Voici ce que j'ai fait :
- Dans les declarations de mon formulaire :
Imports System.Math
Imports System.Drawing.Imaging
Imports System.IO
Imports System.Net
Public Class Printfrm
Private localPath As String = "C:\Mesdocuments\fiches" 'sous rep fiches du rep mes documents
Private  fileName As String = "toto.xls"
Private  user As String = "mon_user"
Private  password As String = "mon_password"
Private ftpUrl = "ftp.cluster006.ovh.net/fiches/".
.
.
Private ... les autres declarations de mon form


Ensuite, sur le clic de mon bouton "upload", j'ai fait :
Private Sub Buttonupload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonupload.Click
        Dim requestFileDownload As FtpWebRequest = DirectCast(WebRequest.Create("ftp.cluster006.ovh.net/fiches/" & fileName), FtpWebRequest)
        requestFileDownload.Credentials = New NetworkCredential(user, password)
        requestFileDownload.Method = WebRequestMethods.Ftp.DownloadFile
 
        Dim responseFileDownload As FtpWebResponse = DirectCast(requestFileDownload.GetResponse(), FtpWebResponse)
 
        Dim responseStream As Stream = responseFileDownload.GetResponseStream()
        Dim writeStream As New FileStream(localPath & fileName, FileMode.Create)
 
        Dim Length As Integer = 2048
        Dim buffer As [Byte]() = New [Byte](Length - 1) {}
        Dim bytesRead As Integer = responseStream.Read(buffer, 0, Length)
 
        While bytesRead > 0
            writeStream.Write(buffer, 0, bytesRead)
            bytesRead = responseStream.Read(buffer, 0, Length)
        End While
 
        responseStream.Close()
        writeStream.Close()
 
        requestFileDownload = Nothing
        responseFileDownload = Nothing
    End Sub


Après test, j'ai l'erreur :
URI non valide : Impossible de déterminer le format de l'URI.
à :
Dim requestFileDownload As FtpWebRequest = DirectCast(WebRequest.Create("ftp.cluster006.ovh.net/fiches/" & fileName) 


J'ai donc mis pour avoir une URI correcte : ftp://cluster006.ovh.net/fiches/ au lieu de ftp.cluster006.ovh.net/fiches/

et la, j'ai l'erreur :
La connexion sous-jacente a été fermée : Le serveur a commis une violation de protocole.
à :
Dim responseFileDownload As FtpWebResponse = DirectCast(requestFileDownload.GetResponse(), FtpWebResponse) 


J'avoue ne pas vraiment comprendre ce qui se passe ..... pourrais je beneficier de vos conseils ?
Merci bien

3 réponses

Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

c'est bon problème résolu, le chemin mes documents etait mauvais
merci
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

euh, autant pour moi, j'ai mis le code destiné au download pas a l'upload
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013

voila la version upload qui ne fonctionne pas :
Private Sub Buttonupload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonupload.Click
        Dim requestFTPUploader As FtpWebRequest = DirectCast(WebRequest.Create("ftp://ftp.cluster006.ovh.net/fiches/" & fileName), FtpWebRequest)
        requestFTPUploader.Credentials = New NetworkCredential(user, password)
        requestFTPUploader.Method = WebRequestMethods.Ftp.UploadFile
 
        Dim fileInfo As New FileInfo(localPath & fileName)
        Dim fileStream As FileStream = fileInfo.OpenRead()
 
        Dim bufferLength As Integer = 2048
        Dim buffer As Byte() = New Byte(bufferLength - 1) {}
 
        Dim uploadStream As Stream = requestFTPUploader.GetRequestStream()
        Dim contentLength As Integer = fileStream.Read(buffer, 0, bufferLength)
 
        While contentLength <> 0
            uploadStream.Write(buffer, 0, contentLength)
            contentLength = fileStream.Read(buffer, 0, bufferLength)
        End While
        uploadStream.Close()
        fileStream.Close()
        requestFTPUploader = Nothing
    End Sub


malheureusement ca bloque a ce niveau

Dim fileInfo As New FileInfo(localPath & fileName)
Dim fileStream As FileStream = fileInfo.OpenRead()


ou me serais je trompé ??
merci