Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

312
Vistas
.net Core envía un archivo xlsx como respuesta a la solicitud de Ajax

Mi aplicación web solo puede funcionar con archivos .xlsx. Creé una función en mi controlador, que convierte un archivo .xls en un archivo .xlsx. La conversión funciona totalmente bien. Entonces, cada vez que intento abrir un archivo .xls, lo envío a través de una solicitud Ajax.

Después de eso, quiero responder con el archivo .xlsx convertido, pero nunca llega al cliente.

Dado que la conversión funciona bien, simplifiqué el código para simplemente pasar un archivo .xlsx simple, que tampoco funcionó.

JavaScript:

 if (files[0].type == "application/vnd.ms-excel") { console.log("XLS-File"); formData = new FormData(); formData.append("xlsfile", files[0]); $.ajax({ url: '/Home/ConvertToXlsx', type: 'POST', cache: false, processData: false, data: formData, contentType: false, beforeSend: function (xhr) { xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val()); }, success: function (response) { openXLSFile(response); }, error: function () { console.log("An Error occurred"); } }); }

Controlador:

 public IActionResult ConvertToXlsx(IFormFile xlsfile) { //For simplification without conversion //var xlsconverter = new XLSConverter(); //FileStreamResult response = xlsconverter.XLSConvert(xlsfile); var path = $"wwwroot/temp/"; var filepath = Path.Combine(path, "test.xlsx"); MemoryStream x = new MemoryStream(); using(FileStream fs = System.IO.File.OpenRead(filepath)) { fs.CopyTo(x); } return File(x, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); }

En la pestaña de red del navegador obtengo Estado: net::ERR_CONNECTION_RESETcaptura de pantalla aquí

¿Me estoy perdiendo una configuración en alguna parte, lo que hace que simplemente no pueda responder con archivos?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Si desea pasar el archivo a la acción, intente utilizar el siguiente código:

 if (files[0].type == "application/vnd.ms-excel") { console.log("XLS-File"); $.ajax({ url: '/Home/ConvertToXlsx', type: 'POST', cache: false, processData: false, data: files[0], contentType: false, beforeSend: function (xhr) { xhr.setRequestHeader("XSRF-TOKEN", $('input:hidden[name="__RequestVerificationToken"]').val()); }, success: function (response) { openXLSFile(response); }, error: function () { console.log("An Error occurred"); } }); }

Y si desea devolver un archivo con un tipo de contenido, puede intentar usar:

 public IActionResult ConvertToXlsx(IFormFile xlsfile) { return File(xlsfile.OpenReadStream(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); }
about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda