Upload en ftp

Résolu
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010 - 16 déc. 2007 à 18:35
SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010 - 17 déc. 2007 à 06:57
Bonjour,
Je travaille sur VS 2005 vb.net.
Je désire que mon application gère un grang nombre de photos, donc et je choisis de les stocker sur un hébergement statique hors de mon application.
   1. L'utilisateur uploade l'image sur le serveur avec un FileUpload,
   2. Le serveur envoie la photo là où il faut sue l'hébergement statique
   3. Le serveur détruit sa photo.
Tout marche à merveille SAUF QUE , une fois la photo à sa place, elle n'est plus lisible comme photo ...Je la re-télécharge avec Filezilla, l'aperçu déclare "Aucun aperçu disponible", Photoshop : " le segment JPEG est trop court..."


Voici le code que j'ai mis dans un module :



Public

Sub uploadFtp(ByVal UrlSite AsString, ByVal Logon AsString, ByVal MdP AsString, ByVal NomFichArrivee AsString, ByVal FichDepart AsString, ByVal Pages As Page, OptionalByVal delServeur AsBoolean = False)


       
Try



            Dim request As FtpWebRequest WebRequest.Create(UrlSite & NomFichArrivee) 'position et url d'arrivée<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>






           

request.Method = WebRequestMethods.Ftp.UploadFile






            request.Credentials = New NetworkCredential(Logon, MdP)


 







           
Dim monChemin AsString = Pages.Server.MapPath(FichDepart)


 







           
Dim sourceStream As StreamReader = New StreamReader(monChemin)
                'C'EST LA QUE LE BÂT BLESSE ??


           
Dim fileContents AsByte() =Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())






            sourceStream.Close()






            request.ContentLength = fileContents.Length




           
Dim requestStream As Stream = request.GetRequestStream()






            requestStream.Write(fileContents, 0, fileContents.Length)






            requestStream.Close()




           
Dim response As FtpWebResponse = request.GetResponse()




      
'destruction éventuelle







           
If delServeur Then






                File.Delete(monChem)






           
End
If





            response.Close()






       
Catch ex As Exception






           
Throw
New ArgumentException("Upload echoué :
" & ex.Message)






       
End
Try







   
End
Sub




Je l'appelle ainsi









    uploadftp(UrlFtp, LoginFtp, MdPFtp, NomFichArrivee, FichDepart, Page, True)








avec :









UrlFtp="ftp://MonFtp.fr"





LoginFtp="MonLogin"





MdPFtp="MonMotDePasse"





NomFichArrivee="/DossierImages Statique /MaPhoto.jpg"



FichDepart ="/DossierImagesDuServeur/MaPhoto.jpg"



Page : pour pouvoir utiliser "Server.MapPath"



True :
pour supprimer l'image sur le serveur






 







Se peut-il que cette méthode ne marche qu'avec du texte ? j'avoue que:






     
 
Dim sourceStream As StreamReader = New StreamReader(monChem)






      
Dim fileContents AsByte() =Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())



...ne me plait pas beaucoup !
Y a t-il un autre méthode ? merci de vos lumières
Gilles

1 réponse

SuperBouly Messages postés 410 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 8 mai 2010
17 déc. 2007 à 06:57
ouap, cherchez plus, j'avais oublié la classe WebClient !
@+Gilles
SuperBouly
3
Rejoignez-nous