Estoy buscando transmitir un archivo desde una URL generada internamente (es decir, http://192.168.xx/download/filekeylink ) a un usuario para que lo descargue. La forma en que lo tengo configurado es que el usuario presiona el botón de descarga que envía una solicitud WEBAPI POST al controlador que luego presiona una API que obtiene la URL con el archivo listo. El problema aquí es que aunque tengo experiencia cargando archivos locales desde rutas, nunca antes había transmitido un archivo desde una URL y me dijeron que esto es posiblemente mejor que almacenarlo en la memoria (no puedo almacenarlo localmente)
js
async downloadAttach(ID: any) { window.open(await ApiFunc.post('Ticket', 'Download', CommID));// my own API call fucntion that works. }Controlador
[Route("api/Ticket/Download")] [HttpPost] public async Task<//Streamed file> Download([FromBody]string uri) { //Returning the streamed file to user to download }¿Cuál es la mejor práctica al respecto (evitar almacenar el archivo localmente o almacenarlo primero en la memoria)? He visto a algunas personas usando
HttpWebRequestSin embargo, no estoy seguro de que se ajuste a mis necesidades, ya que parece que utiliza la necesidad de acceder a la URL interna (podría estar equivocado, pero cuando lo probé, falló).
Por ejemplo, este código aquí por Dallas:
Descargar/Transmitir archivo desde URL - asp.net
Estoy tratando de entender cómo esto volvería a la vista del cliente e iniciaría la descarga en su navegador sin un valor de retorno. ¿Es porque en su lugar estaría usando una API GET?