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

Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Dernière intervention
21 novembre 2013
- - Dernière réponse : Attila54
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Dernière intervention
21 novembre 2013
- 23 mai 2012 à 15:49
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
Afficher la suite 

Votre réponse

3 réponses

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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Attila54
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Dernière intervention
21 novembre 2013
0
Merci
euh, autant pour moi, j'ai mis le code destiné au download pas a l'upload
Commenter la réponse de Attila54
Messages postés
409
Date d'inscription
jeudi 30 juin 2005
Dernière intervention
21 novembre 2013
0
Merci
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
Commenter la réponse de Attila54

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.