Comment puis-je utiliser un .ashx gestionnaire avec un asp:Image de l'objet?
J'ai un ashx gestionnaire:
<%@ WebHandler Language="C#" Class="Thumbnail" %>
using System;
using System.Web;
public class Thumbnail : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string imagePath = context.Request.QueryString["image"];
//split the string on periods and read the last element, this is to ensure we have
//the right ContentType if the file is named something like "image1.jpg.png"
string[] imageArray = imagePath.Split('.');
if (imageArray.Length <= 1)
{
throw new HttpException(404, "Invalid photo name.");
}
else
{
context.Response.ContentType = "image/" + imageArray[imageArray.Length - 1];
context.Response.Write(imagePath);
}
}
public bool IsReusable
{
get { return true; }
}
}
Pour l'instant tout ce gestionnaire n'est d'obtenir une image et de le retourner. Dans ma page aspx, j'ai cette ligne:
<asp:Image ID="Image1" runat="server" CssClass="thumbnail" />
Et le code C# derrière cela est:
Image1.ImageUrl = "Thumbnail.ashx?image=../Files/random guid string/test.jpg";
Lorsque j'affiche la page web, les images ne s'affichent pas et le code HTML montre exactement ce que j'ai tapé:
<img class="thumbnail" src="Thumbnail.ashx?image=../Files%5Crandom guid string%5Cimages%5Ctest.jpg" style="border-width:0px;" />
Quelqu'un peut me dire pourquoi cela ne fonctionne pas? Malheureusement, je n'ai commencé à travailler avec ASP.NET hier et je n'ai aucune idée de comment il fonctionne, donc merci de garder les explications simples si possible, merci.
OriginalL'auteur | 2009-07-08
Vous devez vous connecter pour publier un commentaire.
Vous imprimez le chemin de l'image plutôt que le véritable contenu de l'image. Utilisation
méthode à la place.
Assurez-vous de restreindre le chemin d'accès à certains endroit sûr. Sinon, vous pourriez présenter des failles de sécurité que les utilisateurs seront en mesure de voir le contenu de n'importe quel fichier sur le serveur.
img src
. Plus tard, j'ai l'intention d'avoir la HttpHandler générer une vignette, puis retourne le chemin.Ce n'est pas ce qu'est un gestionnaire HTTP. Le navigateur traite le gestionnaire en tant que fichier image. Il ne peut pas modifier l'original de la réponse HTML de la page.
OriginalL'auteur Mehrdad Afshari
Ce code à l'aide de la Visualisation de l'image par le nom Du Fichier Chemin d'accès Spécifié.
ex. http://onlineshoping.somee.com/Fimageview.ashx?FImageName=FrozenToront.Jpg
Et Vous pouvez utiliser .ashx dans votre ASPX corps html.
Exemple:
OriginalL'auteur RKTUXYN
Je suis le posteur d'origine et j'ai enfin compris le problème. Tout ce que j'avais à faire était de changer:
:
De ponctuation doit être changé à son équivalent HTML, de sorte que les barres obliques inverses deviennent %5C, etc..., sinon ça ne fonctionne pas.
Oh, j'ai oublié de mentionner, c'est dans un DataList. À l'aide de
Image1.ImageUrl = "Thumbnail.ashx?image=blahblah";
à l'extérieur d'un DataList fonctionne parfaitement bien, étrangement.OriginalL'auteur Daniel T.