首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端如何下载文件

前言 如果后台返回的是文件地址,那么前端直接通过 window.location.href 加文件地址,就可以下载文件; 但是如果后台返回的是文件,那么前端就需要做一些处理; 其实前端处理的核心:就是将文件流转为文件...封装一个下载工具 这个工具的作用就是,将获取的文件流转为文件,并模拟点击该文件,实现下载 先贴代码,download.js(可直接复制使用) export const download = (res,...type, filename) => { // 创建blob对象,解析数据 const blob = new Blob([res], { // 设置返回的文件类型 // type...获取文件 这里就是调用后台接口,获取文件 后台方法: @GetMapping(value = "/download-file") public byte[] downloadFile(String...加文件地址,就可以下载文件; 如果后台返回的是文件,那么前端就需要做一些处理:就是将文件流转为文件,然后再模拟点击,进行下载

3.5K20

拦截器,文件下载文件

前言 今天下午,突然发现项目群中小伙伴在讨论文件下载的接口出问题了,摸鱼的我只好跳出来问了问(此时的我正在云顶之奕ing),得知是浏览器的响应已经接收到了文件,但是浏览器却没有下载文件,只好暂停了我的摸鱼大业...定位问题 已经响应到了文件,在浏览器跟postman都能看到,那这个接口肯定没啥问题,是跑通了的 去该页面的下载文件函数去打印了一下文件 ------> undefined 欸,问题出现了,没有找到文件...,当然下载不了 这个项目的axios请求是之前封装好了的,所以我直接去响应拦截器中,打印了一下response,这里能看到文件的。...看一下切割好的样子吧: 下载函数 有了文件文件名字,后缀,只需要一个下载函数,我们就可以任意的下载后端传过来的文件了,这里我的想法是a标签。...// 触发click 达成下载事件触发 a.click() } } 去项目的utils下创建这么一个工具函数,传入参数是文件文件名字,这样传进来什么,都可以直接下载

68620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js实现使用文件下载csv文件

    现在我们开始来理解下Bolb对象及它的文件下载应用场景。 1....理解HTML5中a标签的download属性 HTMl5中给a标签新增了一个download属性,只要我们设置该属性值,那么点击该链接时浏览器不会打开新链接,而是会直接下载文件,并且文件名就是 download...因此结合这个特点,我们就可以简单的实现文件下载文件了,我们首先在原来的代码基础之上,再动态创建一个a链接,然后把该a标签的样式设置none, 该链接的 href属性 就是我们上面是有 window.URL.createObjectURL...(blob); 生成的url,然后我们把 a链接的download属性设置下,该属性值就是我们的下载文件文件名。...console.log(blob); const url3 = window.URL.createObjectURL(blob); console.log(url3); var filename = '文件下载

    5.7K30

    前端下载二进制文件

    平时在前端下载文件有两种方式,一种是后台提供一个 URL,然后用 window.open(URL) 下载,另一种就是后台直接返回文件的二进制内容,然后前端转化一下再下载。...这次没有问题,文件能正常打开,内容也是正常的,不再是乱码。 根据后台接口内容决定是否下载文件 作者的项目有大量的页面都有下载文件的需求,而且这个需求还有点变态。...具体需求如下 如果下载文件的数据量条数符合要求,正常下载(每个页面限制下载数据量是不一样的,所以不能在前端写死)。...先来分析一下,首先根据上文,我们都知道下载文件的接口响应数据类型为 arraybuffer。返回的数据无论是二进制文件,还是 JSON 字符串,前端接收到的其实都是 arraybuffer。...如果有,则报错提示,如果没有,则是正常文件下载即可。

    3.1K31

    js使用文件下载csv文件的实现方法

    现在我们开始来理解下Bolb对象及它的文件下载应用场景,话不多说了,来一起看看详细的介绍吧 创建Blob对象方式如下: ```var blob = new Blob(dataArray, options...bc19-391d3bf93d9d 理解HTML5中a标签的download属性 HTMl5中给a标签新增了一个download属性,只要我们设置该属性值,那么点击该链接时浏览器不会打开新链接,而是会直接下载文件...因此结合这个特点,我们就可以简单的实现文件下载文件了,我们首先在原来的代码基础之上,再动态创建一个a链接,然后把该a标签的样式设置none, 该链接的 href属性 就是我们上面是有 window.URL.createObjectURL...(blob); 生成的url,然后我们把 a链接的download属性设置下,该属性值就是我们的下载文件文件名。...const url3 = window.URL.createObjectURL(blob); console.log(url3); var filename = '文件下载

    5.5K10

    JS事件

    想要知道这些事件是在什么时候进行调用的,就需要了解一下“事件”的概念。 事件 事件描述的就是从页面中接收事件的顺序。...而早期的IE和Netscape提出了完全相反的事件概念,IE事件是事件冒泡,而Netscape的事件就是事件捕获。...DOM2级事件规定的事件包括三个阶段: + 事件捕获阶段 + 处于目标阶段 + 事件冒泡阶段 注意:warning::先捕获后冒泡,但是在目标节点上谁写在前面谁先执行。...绑定方式有如下两种 行内绑定(内联模型): 通过在JS中选中某个节点,然后给节点添加onclick属性 "btnClick()">按钮 function btnClick(){...console.log("hello"); } script> 复制代码 动态脚本: 通过在JS中选中某个节点,然后给节点添加onclick属性 "btn">按钮 var btn =

    8.3K20

    JS事件

    事件 事件需要从事件讲起。 JavaScript 与 HTML 之间的交互是通过事件实现的。 “事件就是文档或者浏览器窗口中发生的一些特定的交互瞬间。...而事件描述的是从页面接收事件的顺序。 有意思的是,当时不同的开发团队对于事件提出了完全相反的概念,主要分为IE事件——冒泡,Netscape Communicator事件——捕获。 1....DOM事件 在 DOM 事件中,实际目标(div)在捕获阶段不会接收到事件,意味着在捕获阶段事件从 document 到 html 再到 body 就会停止。...输出结果 可是,当我们将子级的冒泡和捕获在js中位置调换后,输出的则是……子级先冒泡,再捕获!如下: ? 输出结果2 这是什么原因呢?? 下期——事件处理顺序,进一步揭晓。...点击下面链接 查看历史文章 git 基础操作 js处理微信分享配置 小程序生命周期

    5.8K10

    pdf.js预览pdf文件(base64)

    1、前言: 新接手一个老项目,需要改造pdf文件的预览效果,接口直接返回的pdf文件文件base64字符串,前端只能拿到base64来进行预览。...pdf.js是一款非常优秀的pdf解析工具,但不支持直接预览文件,这里需要对pdf.js稍微改造。...2、下载pdf.js 下载地址:https://mozilla.github.io/pdf.js/ 下载稳定版本,下载后解压,把他放在静态资源目录下面,我这里的项目是老项目,前后端么有分离的java项目...,放在webapp下面,我把下载以后的文件解压重新命名为pdfjs文件夹,如图  3、保存pdf文件 我这里是一个接口返回包括内容详情,图片,pdf文件等所有内容,点击一条pdf记录,跳转打开新的标签页进行预览...因此把接口返回的pdf文件base64编码先本地缓存.跳转到我们下载的pdf文件夹里面的【viewer.html】文件

    15.6K21

    vue 带token下载——XMLHttpRequest + blob 下载文件(vue导出excel乱码问题)

    以前的文件下载可以直接通过a标签链接跳转,或者window.open()等都是打开页面方式直接处理。...但这次的vue项目中,因为后台需要通过请求头部信息拿token信息,就导致上面的直接打开页面方式失效,只能通过blob实现文件下载。 从网上查了些方法,后面采用了下面这种实现方式。.../** 导出需要携带token,此处采用原生XMLHttpRequest去下载文件 */ import { getToken } from '@/utils/auth' export function...文件内容 import Cookies from 'js-cookie' const TokenKey = 'Admin-Token' export function getToken() { return...Vue2 导出Excel + 解决乱码问题 —— axios (下载后台传过来的文件(excel)后乱码问题):给出了3种解决方案(都是结合axios请求方式):有的采用js-file-download

    4K20

    Node.js 动态表格大文件下载实践

    HTTP 文件下载 讲具体问题之前需要先了解一些 HTTP 基础,下面简单介绍一下用 Node.js&Koa 怎么实现文件下载。...参考: rfc2616 19.5.1 Content-Disposition rfc1806 Node.js Stream 简单下载 最简单的情况就是服务器上文件系统已经存在了某个文件,客户端请求下载直接把文件读了吐回去即可...流式下载 简单下载在碰到大文件的情景就不够用了,因为 Node 无法将大文件一次性读取到进程内存里。...,因为 Content-Type 被设置为了 application/octet-stream,浏览器认为其是一个二进制文件所以默认下载处理了。...在上面的 xlsx.js 文件中,是先输出一个文件再使用 fs.createReadStream 输出 exceljs 库提供了 API 来实现写: const workbook = new Excel.stream.xlsx.WorkbookWriter

    6.2K30

    前端实现将二进制文件,并下载为excel文件

    一、关于二进制含义:二进制是一种计算机文件格式,它的数据以二进制形式存储,与文本文件不同。...常见的: Blob、ArrayBuffer、File、FileReader 和 FormDat在浏览器中的样子如下:二、项目实践1、导入excel方法代码片段// 导入时,接口调用,失败后得到文件axios...(res.data, '导入失败后下载的报错文件') }})2、二进制文件流转换成excel方法实现/** * 将二进制文件下载到本地,保存为excel文件 * @param {*} binFile...二进制文件 * @param {*} fileName 下载后的文件名 * @param {*} blobType 文件格式 */downloadBinaryFile(binFile, fileName...excel文件,并下载了,但是下载后的文件打不了!

    46010
    领券