none
Uploadify y mvc RRS feed

  • Pregunta

  • Hola estoy iniciandome en mvc y seguramente la pregunta que voy a hacer les resultara bastante basica ...

    Estoy usando mvc3 y uploadify para subir imagen, me estoy basando en

    Upload Files In RAZOR With jQuery Uploadify Plugin

    y lo que quiero saber es como puedo guardar la direccion en donde se guarda la imagen para poder utilizarla  despues.

    public class EventosController : Controller
        {
            string Imagen;
            //
            // GET: /Eventos/
    
            public ActionResult Crear()
            {
                var grupos = Grupo.GetListGrupos();
                var list = new SelectList(grupos, "GrupoID", "Nombre");
                ViewData["Grupos"] = list;            
                return View();
            }
    
            [HttpPost]
            public ActionResult Crear(Evento model, FormCollection form)
            {
                string selectedValues = form["Grupos"];
                string[] vstring = selectedValues.Split(',');
    
    /*Aqui quiero utilizar la dirrecion de donde guardo la imagen*/
                model.PathImagen = Imagen ;
                model.Alta(vstring);
                
                return RedirectToRoute("Index","Home");
            }
    
            public string Upload(HttpPostedFileBase fileData)
            {
    
                var fileName = Path.Combine(Server.MapPath("~/App_Data/Eventos"),  fileData.FileName);
                fileData.SaveAs(fileName);
                Imagen = fileName;
                return "ok";
            }
    
        }
    }

    proble utilizando una variable pero al pasar de un metodo a otro la variable pierde su valor(supongo que por alguna de las caracteristicas de mvc)...

    Desde ya gracias por su ayuda, Pablo.


    jueves, 13 de septiembre de 2012 1:54

Respuestas

  • Hola.

    Te recomiendo que vayas por partes, asegurando que todo va funcionando correctamente poco a poco.

    Primero, obtén el valor retornado por el servidor tras subir el archivo. En la documentación de uploadify tienes información y ejemplos de cómo hacerlo, pero básicamente consiste en utilizar, por ejemplo, el evento "onUploadSuccess" para tomar el control cuando la subida del archivo ha acabado, y obtener los valores retornados:

    $(function() {
        $("#file_upload").uploadify({
            'swf'             : '/uploadify/uploadify.swf',
            'uploader'        : '/uploadify/uploadify.php',
            'onUploadSuccess' : function(file, data, response) {
                alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
            }
        });
    

    Para comprobar que recibes el valor correcto puedes poner un alert() o algo así en el método onUploadSuccess().

    Una vez tienes el nombre del archivo, simplemente establece el valor del campo hidden, por ejemplo así:

    // Asumiendo que el hidden está definido así:
    // <input type='hidden' name='filename' id='filename'>
    $("#filename").val(valorRetornado);
    
    

    Cuando ya tengas esto listo, desde la acción que recibe los datos del controlador simplemente tendrás que acceder al campo hidden como si fuera uno más de los que ya tienes, por ejemplo así:

    string filename = form["filename"];

    Espero que te sea de ayuda.

    Saludos.


    José M. Aguilar
    Variable not found

    jueves, 13 de septiembre de 2012 19:38

Todas las respuestas

  • Hola!

    Hay una solución sencilla de implementar que consiste en lo siguiente:

    • en la vista "Crear", añade un campo hidden al formulario,
    • haz que la acción en la que recibes y salvas el archivo retorne la ruta hacia éste, en lugar del "ok" que tienes en este momento,
    • y desde el lado del script de la vista "Crear", obtén el valor retornado al subir el archivo (=su ruta) y almacénalo en el campo hidden.

    De esta forma, cuando recibas los datos del formulario puedes acceder al valor del campo hidden (te habrá llegado junto con los otros campos) y cargarlo en tu clase del modelo.

    Espero que te sea de ayuda.

    Salusos.


    José M. Aguilar
    Variable not found


    jueves, 13 de septiembre de 2012 14:30
  • Gracias por la ayuda José... con los dos primeros puntos no tube problemas... pero el 3 no se como hacelo.
    jueves, 13 de septiembre de 2012 17:00
  • Hola.

    Te recomiendo que vayas por partes, asegurando que todo va funcionando correctamente poco a poco.

    Primero, obtén el valor retornado por el servidor tras subir el archivo. En la documentación de uploadify tienes información y ejemplos de cómo hacerlo, pero básicamente consiste en utilizar, por ejemplo, el evento "onUploadSuccess" para tomar el control cuando la subida del archivo ha acabado, y obtener los valores retornados:

    $(function() {
        $("#file_upload").uploadify({
            'swf'             : '/uploadify/uploadify.swf',
            'uploader'        : '/uploadify/uploadify.php',
            'onUploadSuccess' : function(file, data, response) {
                alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
            }
        });
    

    Para comprobar que recibes el valor correcto puedes poner un alert() o algo así en el método onUploadSuccess().

    Una vez tienes el nombre del archivo, simplemente establece el valor del campo hidden, por ejemplo así:

    // Asumiendo que el hidden está definido así:
    // <input type='hidden' name='filename' id='filename'>
    $("#filename").val(valorRetornado);
    
    

    Cuando ya tengas esto listo, desde la acción que recibe los datos del controlador simplemente tendrás que acceder al campo hidden como si fuera uno más de los que ya tienes, por ejemplo así:

    string filename = form["filename"];

    Espero que te sea de ayuda.

    Saludos.


    José M. Aguilar
    Variable not found

    jueves, 13 de septiembre de 2012 19:38
  • Muchas gracias José, por tomarte un tiempo para ayudarme...

    Saludos, Pablo.

    viernes, 14 de septiembre de 2012 0:54