none
Subir o Adjuntar Archivo en MVC 4 RAZOR

    Pregunta

  • Amigos necesito de su ayuda, tengo una aplicación en MVC4 Razor y estoy intentado subir un archivo con <input type="file" name="archivo" /> pero no me resulta, adjunto código:

    @using (Html.BeginForm())
    {
        // @Html.ValidationSummary("No fue posible crear la Persona") esto es para mostrar el mensaje arriba en general.
        <fieldset>
            <legend>Formulario de Registro</legend>
            <ol>
                <li>
                    @Html.LabelFor(m => m.Nombre)
                    @Html.TextBoxFor(m => m.Nombre)
                     @Html.ValidationMessageFor(m => m.Nombre)
                </li>
                <li>
                    @Html.LabelFor(m => m.Apellidos)
                    @Html.TextBoxFor(m => m.Apellidos)
                     @Html.ValidationMessageFor(m => m.Apellidos)
                </li>
                <li>
                    @Html.LabelFor(m => m.Edad)
                    @Html.TextBoxFor(m => m.Edad) 
                    @Html.ValidationMessageFor(m => m.Edad)
                </li>
                <li>
                    @Html.LabelFor(m => m.Comuna)
                    @Html.TextBoxFor(m => m.Comuna)
                     @Html.ValidationMessageFor(m => m.Comuna)
                </li>
                <li>
                 @*   @Html.TextBox("file", "", new { type = "file" }) *@
                    <input type="file" name="archivo" /> <input type="submit" value="Cargar" name="boton" />
                </li>
            </ol>
            <input type="submit" value="Registrar" name="boton"/>
            <input type="submit" value="Volver" name="boton" />
            <input type="submit" value="Llenar" name="boton" />
            <input type="submit" value="limpiar" name="boton" onclick="return limpiar(); return false;"/>
           @* <input type="submit" value="limpiar" name="boton"/>*@
        </fieldset> 

    Y luego en el controlador recibo:

           [HttpPost]
            public ActionResult Cargar(HttpPostedFileBase archivo)
            {
                if (archivo != null && archivo.ContentLength > 0)
                {
                    var nombreArchivo = Path.GetFileName(archivo.FileName);
                    var path = Path.Combine(Server.MapPath("~/App_Data/Documentos Subidos"), nombreArchivo);
                    archivo.SaveAs(path);
                }

                return View();
            }

    Mi Problema es que el parametro "archivo" viene siempre nulo o vació, alguien sabe por que puede estar pasando esto?? espero sus comentarios, gracias.
    jueves, 02 de enero de 2014 14:48

Todas las respuestas

  • hola

    cuando defines la linea

    @using (Html.BeginForm())

    dodne la terminas de cerrar? esta abarcando el <input  type="file" >

    ----

    no probaste dentro del action evaluar el contenido de Request.Form

    para ver si alli viaja el post del archivo, o sea si al menos esta la key con el nombre "archivo"

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 02 de enero de 2014 15:58
  • Hola, a primera vista parece que falta decorar el BeginForm con algo como esto:

    @using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
    
    }

    Un saludo.

    • Propuesto como respuesta Sergio ParraMVP viernes, 03 de enero de 2014 14:47
    jueves, 02 de enero de 2014 18:39
  • Hola, a primera vista parece que falta decorar el BeginForm con algo como esto:

    @using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
    
    }

    Un saludo.

    Estimados, ya resolví el problema.. justamente me faltaba agregar al BeginForm los parametros, gracias.

     
    viernes, 03 de enero de 2014 13:39