• Empleos
  • Sobre nosotros
  • Empleos
    • Inicio
    • Empleos
    • Cursos y retos
  • Empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

200
Vistas
Descarga del objeto de archivo desde el controlador API de C# al cliente usando Javascript

Estoy tratando de devolver un archivo para que un usuario lo descargue cuando hace clic en un botón de descarga en la página. El truco es que estoy descargando el archivo desde un servicio de URL interno. lo tengo configurado de la siguiente manera

El controlador de descarga es una función a la que llamo para devolver el archivo ()

 public class DownloadController : ControllerBase { public FileResult DownloadFile(string url) { WebClient internalDownload = new WebClient(); byte[] bytes = internalDownload.DownloadData(url); return File(bytes, "application/octet-stream", "test" + ".txt"); } }

El controlador API esto es lo que llama el JS

 public class TickController : ApiController { [Route("api/Tick/Download")] [HttpPost] public async Task<IActionResult> Download([FromBody] string ID) { string url = await GetFile("D00023974"); DownloadController downloader = new DownloadController(); return downloader.DownloadFile(url); } }

El Javascript que tengo para fines de prueba en este momento.

El API Manager Javascript que envía la solicitud al controlador anterior:

 export class ApiCall { static post(controller: string, action: string, data: any, qString?: string) { var url = '/api/' + controller; if (action != null) url += '/' + action; if (querystring != null) url += "?" + qString; return $.ajax({ url: url, data:JSON.stringify(data), method: 'POST', dataType: 'json', contentType: 'application/json; charset=utf-8', }); } }

Y la llamada de prueba actual y verificar si está devolviendo algo.

 async downloadAttach(ID: any) { window.open(await WebApiManager.post('Tick', 'Download', ID)); }

Lo anterior devuelve un objeto de la siguiente manera:

 [[Prototype]] Object ContentType application/octet-stream FileContents //Filled with Base64 FileDownloadName test.txt _proto_ Object

Sin embargo, no estoy seguro de cómo iniciar la descarga en el lado del cliente del archivo devuelto. Cualquier ayuda sería muy apreciada.

over 3 years ago · Juan Pablo Isaza
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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda