none
FileUpload ASP MVC RRS feed

  • Pregunta

  • Hola

    Existe alguna forma en ASP MVC para que se pueda capturar el archivo posteado en una view ??Actualmente cuento con esto:

    HttpPostedFileBase file = Request.Files["fleFile"];
    Pero existe alguna otra forma ?? Pues considero la anterior algo inseguro ...
    martes, 15 de julio de 2014 18:14

Respuestas

  • estas realizando un post de un archivo solo puedes tomarlo desde el lado del servidor

    no desde el cliente con codigo javascript o jquery, si eso es lo que buscabas


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 15 de julio de 2014 19:46
  • Buenas!

    Lo que si puedes hacer es que el model binder te lo enlace como parámetro en lugar de tener que ir a Request.Files:

    public ActionResult Save(Enterprise entity, HttpPostedFileBase fleFile) {
        // ...
    }

    Así te ahorras el acceso a Request y es todo mucho más elegante.

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis


    jueves, 17 de julio de 2014 7:37

Todas las respuestas

  • hola

    pero porque quieres hacer eso en la view, deberias hacerlo en el action del controller que se invoca cuando se realiza el post

    no le veo mucho el sentido a realizar eso en la view

    desde el action podrias tomar la info del archivo y enviarlo en el ViewBag o en el model de la view como datos que necesites mostrar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 15 de julio de 2014 18:44
  • Hola

    Efectivamente esto lo hago en la View, tengo un Action que hace esto:

    [HttpPost]
            public ActionResult Save(Enterprise entity)
            {
                LoadComplexList(entity);
    
                if (ModelState.IsValid)
                {
                    HttpPostedFileBase file = Request.Files["fleFile"];
    Pero para capturar el file del control solo se puede hacer de esa forma ?? O lo puedo hacer usando algún otro patron como MVVM ... Me parece que capturando el control se es inseguro ...
     
    martes, 15 de julio de 2014 19:04
  • o sea quieres envier el nombre del file a la view ?

    [HttpPost]
    public ActionResult Save(Enterprise entity)
    {
    	LoadComplexList(entity);
    	
    	if (ModelState.IsValid)
    	{
    		HttpPostedFileBase file = Request.Files["fleFile"];
    		ViewBag.FileName = file.FileName;
    	}
    	
    	return View();
    }

    le puedes enviar el dato en el viewbag a la view

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 15 de julio de 2014 19:23
  • Es decir que para capturar información de la view solo se puede hacer:

    HttpPostedFileBasefile = Request.Files["fleFile"];

    No hay otra forma, como un Helper o usando MVVM ...

    martes, 15 de julio de 2014 19:29
  • estas realizando un post de un archivo solo puedes tomarlo desde el lado del servidor

    no desde el cliente con codigo javascript o jquery, si eso es lo que buscabas


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 15 de julio de 2014 19:46
  • Buenas!

    Lo que si puedes hacer es que el model binder te lo enlace como parámetro en lugar de tener que ir a Request.Files:

    public ActionResult Save(Enterprise entity, HttpPostedFileBase fleFile) {
        // ...
    }

    Así te ahorras el acceso a Request y es todo mucho más elegante.

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis


    jueves, 17 de julio de 2014 7:37