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

Attila54 409 Messages postés jeudi 30 juin 2005Date d'inscription 21 novembre 2013 Dernière intervention - 23 mai 2012 à 10:09 - Dernière réponse : Attila54 409 Messages postés jeudi 30 juin 2005Date d'inscription 21 novembre 2013 Dernière intervention
- 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
Attila54 409 Messages postés jeudi 30 juin 2005Date d'inscription 21 novembre 2013 Dernière intervention - 23 mai 2012 à 15:49
3
Merci
c'est bon problème résolu, le chemin mes documents etait mauvais
merci

Merci Attila54 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

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