begin process at 2012 05 27 05:54:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > ASP.NET - COMMENT AFFICHER SUR SON SITE UNE IMAGE PROVENANT D'UNE AUTRE ADRESSE URL

ASP.NET - COMMENT AFFICHER SUR SON SITE UNE IMAGE PROVENANT D'UNE AUTRE ADRESSE URL


 Information sur la source

Note :
6,67 / 10 - par 3 personnes
6,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Source .NET ( DotNet ) Niveau :Initié Date de création :19/01/2004 Vu :15 542

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note


 Description

Dans le cadre des architectures complexes, il arrive très souvant que l'on ait une possibilité de transfert de données (via HTTP) entre deux serveurs (dans une DMZ par exemple) mais que les client connecté sur un serveur ne puissent pas se connecter sur le second (imaginez le cas d'un Intranet invisible des Utilisateurs de l'Extranet).
Je vais donc simplement montrer comment pouvoir afficher une image provenant d'une autre URL (cela peut aussi permettre de na pas montrer à vos utilisateurs d'où vient l'image).
PS: notre exemple est issu de l'utilisation des HTTP Handlers, cf tutorial visible ici :
- http://www.asp-php.net/tutorial/asp.net/httphandle rs.php

Source

  • ' -----------------------------------------------------
  • Imports System.IO
  • Imports System.Net
  • ' -----------------------------------------------------
  • Public Class PhotoHandler
  • Implements IHttpHandler
  • ' -----------------------------------------------------
  • Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
  • ' A partir du nom de l'image et du type de sortie crée le Flux Binaire
  • ' afin de le fournir à la page
  • Dim URLPhotoBase As String = "http://www.MonServeur.com/MonRepertoireImageSource/"
  • Dim nomPhoto As String = Trim(context.Request("NomFichier"))
  • Dim nomFichier As String
  • If nomPhoto = "" Then
  • ' Si aucun nom n'est transmis je prends la photo de base
  • nomFichier = URLPhotoBase & "NomImageDeBase.jpg"
  • Else
  • nomFichier = URLPhotoBase & nomPhoto
  • End If
  • Dim myRequest As System.Net.HttpWebRequest
  • Dim myResponse As System.Net.HttpWebResponse
  • Dim s As System.IO.Stream
  • Dim buffer(20480) As Byte
  • Dim iBytesToRead As Integer
  • Dim iBytesRead As Integer
  • Dim n As Integer
  • myRequest = System.Net.WebRequest.Create(nomFichier)
  • myResponse = myRequest.GetResponse()
  • context.Response.ContentType = "image/jpeg"
  • s = myResponse.GetResponseStream()
  • iBytesToRead = myResponse.ContentLength
  • iBytesRead = 0
  • While iBytesToRead > 0
  • ' La Fonctio Read Renvoie 0 ou le nombre d'octets à lire
  • n = s.Read(buffer, iBytesRead, iBytesToRead)
  • ' La fin du fichier a été atteinte
  • If n = 0 Then
  • Exit While
  • End If
  • iBytesRead += n
  • iBytesToRead -= n
  • End While
  • context.Response.BinaryWrite(buffer)
  • s.Close()
  • myResponse.Close()
  • End Sub
  • ' -----------------------------------------------------
  • Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
  • Get
  • Return True
  • End Get
  • End Property
  • ' -----------------------------------------------------
  • End Class
  • ' -----------------------------------------------------
  • Pour appeler cette classe il suffit alors de mettre en source d'un Objet IMG l'adresse qui appelle le Handler :
  • <IMG SRC='photo.ashx?NomFichier=MonFichierImage'>
' -----------------------------------------------------
Imports System.IO
Imports System.Net

' -----------------------------------------------------
Public Class PhotoHandler
 Implements IHttpHandler

 ' -----------------------------------------------------
 Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
 ' A partir du nom de l'image et du type de sortie crée le Flux Binaire 
 ' afin de le fournir à la page 

 Dim URLPhotoBase As String = "http://www.MonServeur.com/MonRepertoireImageSource/"
 Dim nomPhoto As String = Trim(context.Request("NomFichier"))
 Dim nomFichier As String

 If nomPhoto = "" Then
  ' Si aucun nom n'est transmis je prends la photo de base
  nomFichier = URLPhotoBase & "NomImageDeBase.jpg"
 Else
  nomFichier = URLPhotoBase & nomPhoto
 End If

 Dim myRequest As System.Net.HttpWebRequest
 Dim myResponse As System.Net.HttpWebResponse
 Dim s As System.IO.Stream
 Dim buffer(20480) As Byte
 Dim iBytesToRead As Integer
 Dim iBytesRead As Integer
 Dim n As Integer

 myRequest = System.Net.WebRequest.Create(nomFichier)
 myResponse = myRequest.GetResponse()
 context.Response.ContentType = "image/jpeg"
 s = myResponse.GetResponseStream()
 iBytesToRead = myResponse.ContentLength
 iBytesRead = 0

 While iBytesToRead > 0
  ' La Fonctio Read Renvoie 0 ou le nombre d'octets à lire
  n = s.Read(buffer, iBytesRead, iBytesToRead)
  ' La fin du fichier a été atteinte
  If n = 0 Then
   Exit While
  End If
  iBytesRead += n
  iBytesToRead -= n
 End While
 context.Response.BinaryWrite(buffer)
 s.Close()
 myResponse.Close()

End Sub

' -----------------------------------------------------
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
 Get
  Return True
 End Get
End Property

' -----------------------------------------------------
End Class
' -----------------------------------------------------

Pour appeler cette classe il suffit alors de mettre en source d'un Objet IMG l'adresse qui appelle le Handler :
<IMG SRC='photo.ashx?NomFichier=MonFichierImage'>

 Conclusion

Bon Coding

Romelard Fabrice (Alias F___)


 Sources du même auteur

Source .NET (Dotnet) SHAREPOINT 2007 - OBTENIR LA LISTE DES WEBPARTS DANS UNE PAG...
Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES COLLATIONS SHAREPOINT...
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES LANGUES INSTALLÉES DA...
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP

 Sources de la même categorie

Source avec Zip UPLOAD ET SA GESTION VIA FSO par Caius_junioricus
Source avec Zip Source .NET (Dotnet) CLASSE AVEC QUE DES MEMBRES ET DES MÉTHODES STATIQUES POUR G... par tikrimi
Source .NET (Dotnet) ASP.NET - COMMENT OBTENIR LE CONTENU D'UNE PAGE WEB DISTANTE... par fabrice69
Source .NET (Dotnet) CLASSE .NET LISTANT LES ADRESSES MAC D'UNE MACHINE - COMPATI... par aKheNathOn
PING D'UNE LISTE DE POSTE : WHOSBAD par defrance

Commentaires et avis

Commentaire de ricounet le 20/05/2005 15:21:38

BUG ! en essayant ton truc, j'ai ça :

Specified argument was out of the range of valid values.
Parameter name: size

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales