Uploader a la racine d'un site via ftp

Résolu
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Statut
Membre
Dernière intervention
21 novembre 2013
-
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
1
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
1
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
1
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