diff Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs @ 295:8c742d5ccf67

Leyendo imagen directamente desde el stream
author nelopauselli
date Sat, 18 Feb 2012 12:33:54 -0300
parents 1e889a2e45c5
children 1edd42d24711
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs	Fri Feb 17 14:28:05 2012 -0300
+++ b/Agendas/trunk/src/Agendas.Web/Controllers/PatrocinadorController.cs	Sat Feb 18 12:33:54 2012 -0300
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Drawing;
 using System.IO;
 using System.Linq;
 using System.Web;
@@ -82,12 +83,9 @@
 
 				if (patrocinadores.GetByNombre(model.Nombre) == null)
 				{
-					var tempLogoFile = Path.Combine(HttpServer.MapPath("~/App_Data"),
-													model.Nombre +
-													model.Logo.FileName.Substring(model.Logo.FileName.LastIndexOf(".")));
-					model.Logo.SaveAs(tempLogoFile);
 					var patrocinador = new Patrocinador(model.Nombre);
-					patrocinador.LoadLogo(tempLogoFile);
+
+					patrocinador.Logo = StreamToArray(model.Logo.InputStream);
 
 					patrocinadores.Save(patrocinador);
 
@@ -99,7 +97,19 @@
 			return View("DefaultEditor", model);
         }
 
-		[CustomAuthorize(Roles = Roles.Administrador)]
+    	private static byte[] StreamToArray(Stream stream)
+    	{
+    		var buffer = new byte[16*1024];
+    		using (var ms = new MemoryStream())
+    		{
+    			int read;
+    			while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
+    				ms.Write(buffer, 0, read);
+    			return ms.ToArray();
+    		}
+    	}
+
+    	[CustomAuthorize(Roles = Roles.Administrador)]
 		public ActionResult Modificar(string id)
 		{
 			var patrocinadores = AgendaFactory.GetPatrocinadorRepository();