Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2341 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Telechargement fichier distant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Telechargement fichier distant

n°1815682
backdafuck​up
Back to da old skool
Posté le 24-11-2008 à 09:20:16  profilanswer
 

Bonjour à tous,
 
Je viens de terminer un site internet de commande d'impression de posters pour ma boîte, et partenariat avec un grand site mondial (je tairais le nom pour l'instant).
 
Depuis le site partenaire, les gens cliquent sur une image et ont un lien "obtenir un poster de cette image".
 
De notre coté, le site que j'ai fait reçoit une URL en post, et je télécharge l'image via une fonction .net avec webrequest et webresponse.
 
Tous les formats d'image fonctionnent, sauf un : le SVG. Normal, ce n'est pas vraiment un format d'image, c'est du XML qui rend du vectoriel.
Le problème et que je n'arrive pas à télécharger ce svg distant.
 
Je vais coller le code de ce que j'ai tenté, mais le fichier que je télécharge fait 0 Ko.
 

Code :
  1. Shared Function EnregistreImage(ByVal URLImage As String, ByVal CheminDestImage As String) As String
  2.         Dim myRequest As System.Net.HttpWebRequest
  3.         Dim myResponse As System.Net.HttpWebResponse
  4.         Dim s As System.IO.Stream
  5.         Dim graphicTemp As System.Drawing.Graphics
  6.         Dim ImageSource As System.Drawing.Image
  7.         myRequest = System.Net.WebRequest.Create(URLImage)
  8.         myResponse = myRequest.GetResponse()
  9.         If myResponse.ContentType = "image/gif" Then
  10.             Return myResponse.ContentType
  11.         End If
  12.         s = myResponse.GetResponseStream()
  13.         Select Case Right(URLImage, 4)
  14.             Case ".svg", ".SVG"
  15.                 'CAS DU SVG -> NE MARCHE PAS
  16.                 Using outputStream As FileStream = New FileStream(CheminDestImage, FileMode.Create, FileAccess.Write)
  17.                     Dim cnt As Integer = 0
  18.                     Const LEN As Integer = 4096
  19.                     Dim buffer(LEN) As Byte
  20.                     While ((cnt = s.Read(buffer, 0, LEN)) <> 0)
  21.                         outputStream.Write(buffer, 0, cnt)
  22.                     End While
  23.                     outputStream.Close()
  24.                 End Using
  25.             Case Else
  26.                 ImageSource = System.Drawing.Image.FromStream(s)
  27.                 graphicTemp = System.Drawing.Graphics.FromImage(ImageSource)
  28.                 graphicTemp.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver
  29.                 graphicTemp.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality
  30.                 graphicTemp.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
  31.                 graphicTemp.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
  32.                 graphicTemp.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
  33.                 graphicTemp.DrawImage(ImageSource, 0, 0, ImageSource.Size.Width, ImageSource.Size.Height)
  34.                 graphicTemp.Dispose()
  35.                 ImageSource.Save(CheminDestImage, System.Drawing.Imaging.ImageFormat.Jpeg)
  36.                 ImageSource.Dispose()
  37.         End Select
  38.         s.Close()
  39.         myResponse.Close()
  40.         Return myRequest.ContentType
  41.     End Function


 
Voilà, si quelqu'un pouvait me dire ce qui coince dans mon code, et pourquoi le fichier ne s'écrit pas, ca débloquerait une situation...
 
Merci d'avance.

mood
Publicité
Posté le 24-11-2008 à 09:20:16  profilanswer
 

n°1815710
backdafuck​up
Back to da old skool
Posté le 24-11-2008 à 10:21:28  profilanswer
 

un ptit up, si quelqu'un a une idée...

n°1815787
backdafuck​up
Back to da old skool
Posté le 24-11-2008 à 13:22:11  profilanswer
 

Bon, ben j'ai fini par trouver, voilà ce qu'il fallait faire (si jamais yen a qui cherchent la réponse) :  
 
           

Code :
  1. Case ".svg", ".SVG"
  2.                 Dim myStreamReader As StreamReader = New StreamReader(s)
  3.                 Dim strHTML As String = myStreamReader.ReadToEnd
  4.                 Dim sWrite As New StreamWriter(CheminDestImage)
  5.                 sWrite.Write(strHTML)
  6.                 sWrite.Close()

n°1818322
gargamel67
Posté le 28-11-2008 à 13:16:59  profilanswer
 

Attention avec la méthode ReadToEnd: elle va lire le contenu intégral du fichier, le stocker dans une chaine.
Pour de gros fichiers, ce n'est pas une bonne solution car elle pourrait faire planter ton serveur.
La lecture par bloc est en général conseillée.


---------------
Distributeurs automatiques à proximité | Jupiteo - Création et optimisation d'application web

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Telechargement fichier distant

 

Sujets relatifs
[optimisation] fichier txt -> insert base de donnéeCréer un fichier jpg depuis un plot => installer un nouveau module ?
copier-coller d'un fichier sur plusieurs ipGénérer des graphiques et pdfiser le résultat depuis un fichier texte
Ouvrir un userform d'un autre fichier Excel[Bash Linux] compter dans un fichier
comment convertir un InputStream vers un fichier.telechargement par clique de pub
Python - urlretrieve - nom de fichiertéléchargement de fichier distant [résolu]
Plus de sujets relatifs à : Telechargement fichier distant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR