export function downLoadFile(fileType, name, data) { let blob; switch (fileType) { case "jpg": blob = new Blob([data]); break; case "xlsx": case "xls": blob = new Blob([data], { type: 'application/vnd.ms-excel' // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' }); break; case "doc": blob = new Blob([data], { type: 'word:application/msword' }); break; case "pdf": blob = new Blob([data], { type: 'application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' }); break; case "csv": blob = new Blob([data], { type: 'text/csv;charset=utf-8' }); break; } const objectUrl = URL.createObjectURL(blob); const link = document.createElement("a"); // fileName let fileName = `${name}.${fileType}`; link.href = objectUrl; link.setAttribute("download", fileName); document.body.appendChild(link); link.click(); // 释放 window.URL.revokeObjectURL(link.href); }
时间: 2024-02-15 22:28:24 浏览: 183
这是一个JavaScript的文件下载函数,接受三个参数:文件类型(fileType)、文件名(name)和文件数据(data)。在函数中,根据文件类型的不同,使用Blob对象创建对应的文件数据,然后使用URL.createObjectURL方法创建一个指向Blob数据的URL,将URL赋值给一个a标签的href属性,最后通过调用a标签的click方法触发下载。最后使用window.URL.revokeObjectURL方法释放URL对象。该函数支持下载多种类型的文件,包括jpg、xlsx、xls、doc、pdf和csv。
相关问题
export const downloadFile = (data,fileName)=>{ if (!data) { return } let url = window.URL.createObjectURL(new Blob([data])) let link = document.createElement('a') link.style.display = 'none' link.href = url link.setAttribute('download', `${fileName}`) document.body.appendChild(link) link.click() } 解释一下这段代码
这段代码是一个函数 `downloadFile`,用于下载文件。它接受两个参数:`data`表示文件的内容,`fileName`表示文件的名称。
首先,它会检查 `data` 是否存在,如果不存在则直接返回,不进行下载操作。
接下来,它会创建一个 URL 对象,该对象将 `data` 封装成一个 Blob 对象,并生成一个可用于访问的 URL。
然后,它创建一个 `<a>` 标签元素,设置其样式为 `display: none`(不显示在页面上),将之前生成的 URL 设置为其 `href` 属性值。同时,通过 `setAttribute` 方法设置 `download` 属性为传入的 `fileName`。
接着,它将这个 `<a>` 标签添加到页面的 `<body>` 元素中。
最后,通过调用 `link.click()` 方法,模拟点击下载链接,从而触发浏览器下载该文件。
总结来说,这段代码的作用是通过 Blob 对象生成文件下载链接,并模拟点击该链接实现文件的下载。
downloadFile(data) { let blob = new Blob([data?.data], { type: "application/zip" }); let url = window.URL.createObjectURL(blob); let fileName = data?.headers["content-disposition"] .split(";")[1] .split("=")[1]; console.log(fileName, "fileName"); fileName = decodeURI(escape(fileName)); const link = document.createElement("a"); // 创建a标签 link.setAttribute("download", decodeURI(fileName)); link.href = url; link.click(); URL.revokeObjectURL(url); },
这是一个 JavaScript 函数,用于下载文件。函数接收一个参数 `data`,其中包括文件数据和文件名信息。函数的具体步骤如下:
1. 根据 `data` 中的文件数据创建一个 Blob 对象。
2. 使用 `URL.createObjectURL` 方法将 Blob 对象生成一个 URL。
3. 从 `data` 的响应头中获取文件名信息,并对文件名进行解码和转义。
4. 创建一个 `<a>` 标签,并设置 `download` 属性为解码后的文件名。
5. 将 URL 赋值给 `<a>` 标签的 `href` 属性。
6. 触发 `<a>` 标签的点击事件,使得浏览器开始下载文件。
7. 使用 `URL.revokeObjectURL` 方法释放 URL。
总的来说,这个函数的作用是将文件数据转换成可供用户下载的文件,通过浏览器的下载功能实现文件下载。
阅读全文