viernes, 7 de marzo de 2014

AJAX - File Upload

AJAX - FILE UPLOAD

1.- Importar las librerias o Pluggin a utilizar, en la pagina Index de tu Vista (donde vas a cargar tu archivo).



2. Luego, en mi PartView le agrego mi Form y demás controles.

<form name="ajaxform" id="ajaxform" action="./Home/ObtenerRutaArchivo/" method="POST">        Archivo :<input type="file" name="photo" accept="xls" /><br/>    <input type="submit" id="btn" value="Enviar" />
                                        <div id="progress">                                            <div id="bar"></div>                                            <div id="percent">0%</div>                                        </div>
</form>

3. En la misma página, Pego mi JavaScript

<script type="text/javascript">

    //callback handler for form submit

    $('#ajaxform').ajaxForm(function () {

       alert("Form is submitted");
    });
    function uploadFiles(event) {
        var formObj = $(this);
        var formURL = formObj.attr("action");
        var formData = new FormData(this);
        $.ajax({
            url: formURL,
            type: 'POST',
            data: formData,
            mimeType: "multipart/form-data",
            contentType: false,
            cache: false,
            processData: false,
            success: function (data, textStatus, jqXHR) {
                $("#div_listWBS").html(data);
            },
            error: function (jqXHR, textStatus, errorThrown) {
            }
        });
        //event.preventDefault(); //Prevent Default action. 
        //event.unbind();
    }
    $('#ajaxform').on('submit', uploadFiles);
</script>

4. En mi Controller "Home": Metodo "ObtenerRutaArchivo"

[HttpPost]
        public ActionResult ObtenerRutaArchivo()
        {
            DataTable dt = new DataTable();
            var file = Request.Files[0];
            VMWBS BE = new VMWBS();

            string momentImport = DateTime.Now.ToString(Constantes.Formaters.datePatt);
            
            try
            {
                var fileName = Path.GetFileName(file.FileName);
                string nombre = momentImport + "_" +file.FileName;
                var path = Path.Combine(Server.MapPath("~/xlsx/"), nombre);
                file.SaveAs(path);

                //Listado.Add(new Cronograma
                //{
                //    cronograma = 1,
                //    descripcion = "prueba"
                //});
                dt = CargarExcel(path);
                BE.ListCronograma  = InsertarExcel(dt);
            }
            catch (Exception ex)
            {
                throw ex;
            }


            return PartialView("_ListWBS", BE);

        }



Eso es Todo!!

Referencias URL : Otra solucion aquí