Esempio di un controller MVC per le immagini, in modo da gestire richieste di questo tipo:
http://<mywebsite>/image/show/3
Di seguito il controller per gestire la richiesta:
public class ImageController : Controller
{
// gestore del repository delle immagini
private IPhotoService _photoService;
protected override void Initialize( RequestContext requestContext )
{
if( _photoService == null ) _photoService = new DiskFilePhotoService();
base.Initialize( requestContext );
}
public ActionResult Show( int id )
{
// recupera le informazioni dell'immagine che vogliamo visualizzare in base all'id della stessa
PhotoInfo photoInfo = _photoService.GetById( id );
// generazione del percorso dove si trova l'immagine
string imagePath = Service.MapPath( String.Format( "~/Images/{0}", photoInfo.FileName ) );
// visualizza l'immagine
return base.File( imagePath , getImageContentType( imagePath );
}
// recupera in corretto content type dell'immagine da visualizzare
private string getImageContentType( string filename )
{
FileInfo file = new FileInfo( filename );
switch( file.Extension.ToUpper() )
{
case ".PNG": return "image/png";
case ".JPG": return "image/jpeg";
case ".JPEG": return "image/jpeg";
case ".GIF": return "image/gif";
case ".BMP": return "image/bmp";
default:
throw new NotSupportedException( "Il file specificato non è supportato!" );
}
}


Commenti