Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    C#: Sito web MVC, visualizzare immagine

    Salve, io programmo in C# tramite Visual Studio 2012..
    Sto lavorando in un Database SQL Sever, dove al suo interno è presente una tabella Immagine contenente per l'appunto un attributo di tipo image:
    es.

    Create table Immagine
    (Photo image
    )
    go

    Questo database l'ho inserito all'interno di un sito Web MVC.

    Il mio problema è il seguente:
    L'attributo Photo della tabella Immagine del database contiene una stringa di byte che si riferisce all'immagine che ho inserito,perciò quando vedo la pagina web vedo questa stringa di byte.
    Io invece vorrei visualizzare l'immagine,ma non sò come fare a convertire la stringa di byte in immagine.

    Come posso fare? Mi potete aiutare??

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Il primo articolo trovato su google
    http://www.dotnethell.it/articles/DatabaseBLOBs.aspx

    PS
    Spero che la tabella Immagine oltre al campo "image" contenga anche una chiave.

  3. #3
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    il metodo File della classe controller ritorna un FileResult. FileResult è un tipo di risultato che deriva dalla classe Base ActionResult (quindi è un tipo di ritorno delle action); non ritorna necessariamente un file fisicamente esistente, basta che il flusso http contenga i bytes e il mimetype giusto. In .NET gli array di byte che costituiscono i flussi meglio gestirli con gli stream (FileStream o MemoryStream, ecc.).
    Per risolvere devi avere una action che dato un input (es. l'id dell'immagine da prelevare dal db) restituisca un risultato di tipo fileResult.

    nella proprieta src del tag img devi richiamare questa action.

    codice:
    public ActionResult ImmagineFromDB(int id)
    {
      //array di bytes, meglio se un memorystream
      var bytes = PrelevaImgDalDB(id);
    
      //il response http è lo identico a quello che otterresti se la richiesta fosse fatta ad un jpeg fisicamente esistente sul server.
      return File(bytes, "image/jpeg");
    }
    codice:
    [img]@Url.Action([/img]

  4. #4
    Originariamente inviato da rsdpzed
    il metodo File della classe controller ritorna un FileResult. FileResult è un tipo di risultato che deriva dalla classe Base ActionResult (quindi è un tipo di ritorno delle action); non ritorna necessariamente un file fisicamente esistente, basta che il flusso http contenga i bytes e il mimetype giusto. In .NET gli array di byte che costituiscono i flussi meglio gestirli con gli stream (FileStream o MemoryStream, ecc.).
    Per risolvere devi avere una action che dato un input (es. l'id dell'immagine da prelevare dal db) restituisca un risultato di tipo fileResult.

    nella proprieta src del tag img devi richiamare questa action.

    codice:
    public ActionResult ImmagineFromDB(int id)
    {
      //array di bytes, meglio se un memorystream
      var bytes = PrelevaImgDalDB(id);
    
      //il response http è lo identico a quello che otterresti se la richiesta fosse fatta ad un jpeg fisicamente esistente sul server.
      return File(bytes, "image/jpeg");
    }
    codice:
    [img]@Url.Action([/img]
    1° domanda: public ActionResult ImmagineFromDB lo inserisco dentro il controller?
    2° domanda: PrelevaImgDalDB cosa fà?

  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    1) si, un controller a parte però (in tal caso cambierà anche la chiamata all'helper method @Url.Action che contemplerà anche il nome del controller.
    2) la fai tu. leggi l'array di byte dal tuo campo nel database, la variabile bytes è di tipo MemoryStream. Il link che ha postato Uranio spiega come fare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.