41 votes

Convertir en Tableau d'Octets de l'Image et l'Afficher dans la Vue de Rasoir

Je suis en utilisant EF 4.1 le Premier Code et par souci de simplicité, disons que j'ai l'Entité suivante de la classe:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public Byte[] Image { get; set; }
}

J'ai réussi à créer un Créer une Vue qui permet l'Ajout d'un objet dans la Base de données.

Mais quand je viens pour afficher les détails d'une Personne, je reste bloqué sur l'affichage de l'Image. Après une recherche Google pour de nombreuses heures, j'ai le texte suivant:

// To convert the Byte Array to the author Image
public FileContentResult getImg(int id)
{
    byte[] byteArray = DbContext.Persons.Find(id).Image;
    return byteArray != null 
        ? new FileContentResult(byteArray, "image/jpeg") 
        : null;
}

Et là où je suis tenter de liste de la Personne des détails, j'ai le texte suivant pour obtenir l'Image à afficher:

<img src="@Html.Action("getImg", "Person", new { id = item.Id })" alt="Person Image" />

Cependant, le ci-dessus n'est pas de travail, mon image source [src] attribut retourne vide.

Je serais très heureux de recevoir de l'aide avec l'obtention de mes images à afficher.

Je Vous Remercie.

Ciwan.

66voto

Leniel Macaferi Points 38324

Il y a une manière plus simple de faire cela si vous avez déjà arriver d'avoir l'image chargée dans votre modèle:

<img src="data:image;base64,@System.Convert.ToBase64String(Model.Image)" />

Faire de cette façon, vous n'avez pas besoin d'aller sur le serveur à nouveau, juste pour récupérer l'image byte[] de la base de données que vous êtes en train de faire.

37voto

Darin Dimitrov Points 528142

Comme ceci:

<img src="@Url.Action("getImg", "Person", new { id = item.Id })" alt="Person Image" />

Vous avez besoin d' Url.Action et pas Html.Action parce que vous voulez juste pour générer une url à l' GetImg action. Html.Action fait quelque chose d'entièrement différent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X