Estoy trabajando en un sistema relacionado con la gestión de documentos y estoy atascado en un problema durante mucho tiempo. A continuación mencioné el código jQuery que llama a una API de PHP que devuelve datos binarios (la imagen también se adjunta con la publicación.
Mi código jQuery crea una URL de blob como "*blob: https://example.com/16b68a7c-b773-4320-9805-ebc1675e6745*" y carga la url en una ventana después de activar el clic pero no cargó ninguna cosa en el navegador ni descarga ningún archivo.
Tenga en cuenta que quiero descargar el archivo con el nombre del archivo que se generará después de la conversión de datos binarios (dinámicamente) de la respuesta.
Mi código jQuery:
$.ajax( '<?php $base_url ?>', { data: docDeleteParams, type: "POST", 'dataType' : 'binary', 'xhrFields' : { 'responseType' : 'blob' }, xhr: function () { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 2) { if (xhr.status == 200) { xhr.responseType = "blob"; } else { xhr.responseType = "text"; } } }; return xhr; } }) .complete(function ( xhr ) { let blob = new Blob(xhr.response); console.log(blob); var $a = $( '<a />' ), base_url = window.URL || window.webkitURL, url = base_url.createObjectURL( blob ); $a.attr({ 'href' : url, 'download' : 'document_name', "target": "_blank" }); $("body").append($a); $a.click(); });Respuesta de API: