> Faqs > Subir archivos pesados con Ajax Visual Studio 2019

Subir archivos pesados con Ajax Visual Studio 2019

Buenas noches,

Tengo este codigo:

    <div class="contenedor-principal">
        <div class="col-md-12 col-sm-12 Conteiner_Gris">
            <h4>Adjunte el archivo para sincronizar la data de plataformas</h4>
            <br>
            <h12><b>Nota:</b> Solo se permiten cargar archivos .txt</h12>
            <br>
            <h12><b>Formato por linea:</b> Verificar el archivo adjunto en el manual de la aplicacion</h12>
            <hr />

            <div class="col-md-2 Conteiner_Top2">
                <label for="file">Cargar Archivo:</label>
                <input type="file" name="archivoAdjunto" id="archivoAdjunto" />
                <button class="btn btn_azul" onclick="ValidarAdjunto()" id="btn-InsertarPromocionesFidelizacion"><span class=""></span>&nbsp; Cargar </button>
            </div>
        </div>
    </div>
    
    
    
    
    function ValidarAdjunto()
{

    var archivoAdjunto = $("#archivoAdjunto").val();


    console.log(archivoAdjunto);

    var error = "";

    if (archivoAdjunto == null || archivoAdjunto == undefined || archivoAdjunto == "") {
        error += "<li>Debe seleccionar un archivo</li>";
    }

    if (error != "") {
        error = "<ul>" + error + "</ul>";
        showMessageVal(error, "ERROR");
        return false;
    }
    else {
        //ejecutar ajax sicorna para esperar resulta
        console.log('DatosAdicionales - ValidarAdjunto ');
        return GuardarAdjunto();
    }
}




function GuardarAdjunto()
{

    var formData = new FormData();
    var totalFiles = document.getElementById("archivoAdjunto").files.length;
    var auxName;
    for (var i = 0; i < totalFiles; i++) {
        var file = document.getElementById("archivoAdjunto").files[i];
        auxName = file.name;
        formData.append("FileUpload", file);
    }

    if (auxName !== null || auxName !== undefined || auxName !== "") {
        $.ajax({
            type: 'post',
            url: '/SoporteDatos/GuardarArchivoMasivo',
            data: formData,
            dataType: 'json',
            contentType: false,
            processData: false,
            async: false, // La petición es síncrona
            cache: false, // No queremos usar la caché del navegador
            success: function (result) {
                if (result.Tipo == "ERROR") {
                    showMessage(result.Codigo + " - " + result.Mensaje, result.Tipo);
                    return false;
                }
                else {
                    $("#FormularioModal").modal('hide');
                    var auxSplit = result.Mensaje.split('|');
                    if (auxSplit.length > 0) {
                        //$('#btnCopyUrl').css("visibility","visible");
                        $("#ptagImg").html("Copie y pegue el siguiente tag en su codigo html para mostrar la imagen el alto y ancho se modifican por el usuario: ");
                        $("#ptagImg1").html( auxSplit[0]);
                        $("#ptagImg2").html( auxSplit[1]);

                    }
                    return true;
                }
            },
            error: function (data) {
                showMessage("Ha ocurrido un error en la aplicación, por favor intentelo nuevamente", "Error");
                return false;
            }
        });
    }
}

Me funciona perfecto para archivos pequeños. Actualmente tengo un requerimiento para un desarrollo que debe adjuntar archivos de 50Mb y cuando selecciono el archivo y voy a invocar el controller para guardarlo, me genera un error 500. Es posible hacerlo?

Respuestas

Un error 500 indica que tienes un problema en el código del lado del servidor. Así que tu problema no se encuentra Ajas ni en el script de Javascript que has enviado.

Lo más seguro es que el servidor donde recibes el request tiene una limitación en el tamaño máximo de los ficheros que acepta y te genera un error como respuesta.

Tendrías que mirar para el servidor web que estés usando qué opciones de configuración hay disponibles para poder hacer que acepte archivos de dimensiones tan grandes como necesites. Seguramente cambiando esa configuración y reiniciando el servidor todo funcione perfectamente.

Miguel Angel
3295 146 215 17
Buenas tardes, El error se presenta en modo debug al invocar el controller "/SoporteDatos/GuardarArchivoMasivo". Tendras algun post que pueda revisar de como modificar esas configuraciones en el WebServer del debug o local? Quedo atento,