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
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é :<br>" & 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="/DossierImagesStatique/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