表单提交下载文件被浏览器拦截怎么办?解决方法分享!

16 min read

是的,浏览器通常会阻止使用target="_blank"来下载文件,因为这可能会导致安全问题。为了解决这个问题,可以考虑使用JavaScript或后端语言来处理文件下载。在这种情况下,可以使用XMLHttpRequest对象或类似的技术将文件传输到客户端并强制浏览器下载。以下是一个示例JavaScript函数,演示如何使用XMLHttpRequest来下载文件:

function downloadFile(url) {
  var xhr = new XMLHttpRequest();
  xhr.open('GET', url, true);
  xhr.responseType = 'blob';
  xhr.onload = function() {
    if (xhr.status === 200) {
      var blob = new Blob([xhr.response], {type: 'application/octet-stream'});
      var url = URL.createObjectURL(blob);
      var a = document.createElement('a');
      a.href = url;
      a.download = 'filename';
      document.body.appendChild(a);
      a.click(); 
    }
  };
  xhr.send();
}

在上述代码中,将文件下载的URL传递给该函数后,它将向服务器发送一个GET请求。服务器将以blob形式返回文件,然后将其转换为URL。最后,将创建一个隐藏的下载链接,将其添加到文档中,并激活该链接以开始下载。