El atributo de descarga de una etiqueta no es válido

Cuando se utiliza una etiqueta para descargar archivos, el atributo de descarga se configura para especificar el nombre del archivo descargado, pero no tiene efecto. Debido a que mi enlace de descarga de etiquetas es de dominio cruzado, supongo que puede deberse a dominio cruzado, el navegador no puede obtener el archivo, por lo que el nombre del archivo no se puede cambiar.
 El método de descarga original es establecer la URL a través de una etiqueta. Hay un nombre de archivo en la ruta de URL proporcionada por el backend. El navegador puede usar el nombre de archivo en la ruta de forma predeterminada. Dado que no hay un nombre de archivo en un determinado ruta, el nombre del archivo debe configurarse manualmente.

Solución:

Cree un nuevo objeto XMLHttpRequest, obtenga el archivo y conviértalo en un blob, convierta el objeto Blob en una URL, cree una etiqueta, asigne el atributo de descarga y descargue.

 const xhr = new window.XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.send();
    xhr.onload = () => {
        if (xhr.status === 200) {
          const url = window.URL.createObjectURL(xhr.response);
          const a = document.createElement('a');
          a.href = url;
          a.download = `${fileName}.xlsx`;
          document.body.appendChild(a);
          a.click();
          document.body.removeChild(a);
          window.URL.revokeObjectURL(url);
    };
}

El navegador agregará automáticamente la extensión adecuada según el tipo de archivo. Agregué .xlsx porque la extensión agregada automáticamente por el navegador es incorrecta.

Supongo que te gusta

Origin blog.csdn.net/m0_49623851/article/details/130971460
Recomendado
Clasificación