JavaScript에서 다운로드 기능을 구현하는 방법: 1. a 태그를 통해 다운로드 2. "window.open" 메서드를 통해 다운로드 3. "location.href" 메서드를 통해 다운로드 4. 파일 전송을 통해 다운로드 블롭 객체 함수.
이 튜토리얼의 운영 환경: Windows 10 시스템, javascript 버전 1.8.5, Dell G3 컴퓨터.
자바스크립트에서 다운로드 기능을 어떻게 구현하나요?
js는 파일 다운로드 기능을 구현합니다.
1. 태그 다운로드
<body> <button onClick="download()">a标签下载</button> <script> function download(url = 'http:www.xxx.com/download?name=file.pdf', fileName = '未知文件') { const a = document.createElement('a'); a.style.display = 'none'; a.setAttribute('target', '_blank'); /* * download的属性是HTML5新增的属性 * href属性的地址必须是非跨域的地址,如果引用的是第三方的网站或者说是前后端分离的项目(调用后台的接口),这时download就会不起作用。 * 此时,如果是下载浏览器无法解析的文件,例如.exe,.xlsx..那么浏览器会自动下载,但是如果使用浏览器可以解析的文件,比如.txt,.png,.pdf....浏览器就会采取预览模式 * 所以,对于.txt,.png,.pdf等的预览功能我们就可以直接不设置download属性(前提是后端响应头的Content-Type: application/octet-stream,如果为application/pdf浏览器则会判断文件为 pdf ,自动执行预览的策略) */ fileName && a.setAttribute('download', fileName); a.href = url; document.body.appendChild(a); a.click(); document.body.removeChild(a); } </script> </body>
장점:
txt, png, pdf, exe, xlsx 및 기타 유형의 파일을 직접 다운로드할 수 있습니다.
단점:
태그는 가져오기 요청만 할 수 있으므로 URL에는 길이 제한이 있습니다
다운로드 진행 상황을 확인할 수 없습니다
도메인 간 제한 사항
인증 작업을 위해 헤더에 토큰을 담을 수 없습니다
인터페이스를 확인할 수 없습니다. 성공 여부
IE 호환성 문제
2. window.open 다운로드
<body> <button onclick="download('http://www.xxx.com/download?name=file.pdf')">window.open下载</button> <script> function download(url) { window.open(url, '_self'); /** * _blank:在新窗口显示目标网页 * _self:在当前窗口显示目标网页 * _top:框架网页中在上部窗口中显示目标网页 /** } </script> </body>
장점:
간단하고 편리함
단점:
<body> <button onclick="download('http://www.xxx.com/download?name=file.pdf')">location.href下载 </button> <script> function download(url) { window.location.href = url; } </script> </body>
<button onclick="download()">文件流转blob对象下载</button> <script> download() { axios({ url: 'http://www.xxx.com/download', method: 'get', responseType: 'blob', }).then(res => { const fileName = res.headers.content-disposition.split(';')[1].split('filename=')[1]; const filestream = res.data; // 返回的文件流 // {type: 'application/vnd.ms-excel'}指定对应文件类型为.XLS (.XLS的缩写就为application/vnd.ms-excel) const blob = new Blob([filestream], {type: 'application/vnd.ms-excel'}); const a = document.createElement('a'); const href = window.URL.createObjectURL(blob); // 创建下载连接 a.href = href; a.download = decodeURL(fileName ); document.body.appendChild(a); a.click(); document.body.removeChild(a); // 下载完移除元素 window.URL.revokeObjectURL(href); // 释放掉blob对象 }) } </script>
위 내용은 자바스크립트에서 다운로드 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!