JavaScript 下载文件并保持原文件名称

JavaScript 下载文件并保持原文件名称<script>//获取文件名functionfileNameFromHeader(disposition){varresult=null;if(disposition&&/filename=.*/ig.test(disposition)){result=dispos…

大家好,又见面了,我是你们的朋友全栈君。

<script>
 // 获取文件名
    function fileNameFromHeader (disposition) {
        var result = null;
        if (disposition && /filename=.*/ig.test(disposition)) {
            result = disposition.match(/filename=.*/ig);
            return decodeURI(result[0].split('=')[1]);
        }
        return null;
        }
function downloads() {
   var url = '/down_excel';
   var xhr = new XMLHttpRequest();

   xhr.open('GET', url, true);        // 也可以使用POST方式,根据接口

   xhr.responseType = "blob";    // 返回类型blob

   // 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑

   xhr.onload = function () {

       // 请求完成

       if (this.status === 200) {

           // 返回200

           var blob = this.response
           var filenames = fileNameFromHeader(xhr.getResponseHeader('Content-Disposition'));
           var reader = new FileReader();

           reader.readAsDataURL(blob);    // 转换为base64,可以直接放入a表情href

           reader.onload = function (e) {

               // 转换完成,创建一个a标签用于下载

               var a = document.createElement('a');

               a.download = filenames.slice(1,filenames.length-1); //'data.xlsx';

               a.href = e.target.result;

               $("body").append(a);    // 修复firefox中无法触发click

               a.click();

               $(a).remove();

           }

       }

   };

   // 发送ajax请求

   xhr.send()

}
</script>

注:此代码只是个人根据当时的环境满足了当时的需求,记录下来用做后续参考!如有问题,请检查软硬件环境是否一致,由于时间精力有限,大部分未做详细环境描述。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134693.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python系列教程一Python入门(一)

    Python系列教程一Python入门(一)前言各位看博客的园友们,大家好,我就是那个风流倜傥的KK,还记得我那篇2019年的年中总结博客吗?我想有许多看博客的园友是没有读过我那篇文章的,KK很生气,后果很严重(开个玩笑了,怎么可能)。给大家

    2022年7月6日
    27
  • Map集合总结

    Map集合总结一:MapMap用于保存具有映射关系的数据,总是以键值对的方式存储数据。Map继承树Map集合的key和value都可以是任何引用类型的数据。Map集合的key不允许重复,value允许重复。key和value之间存在

    2022年5月7日
    53
  • 解决SecureCRTPortable和SecureFXPortable的中文乱码问题

    解决SecureCRTPortable和SecureFXPortable的中文乱码问题平时学习或者工作中,我们会发现Linux客户端SecureCRTPortable、SecureFXPortable连接Linux服务器时会出现中文乱码问题。通过修改配置可以解决这个问题。一、修改SecureCRTPortable的相关配置步骤一:【选项】→【全局选项】步骤二:【常规】→【默认会话】,点击【编辑默认设置】,点击【确定】步骤三:【外观】,把【字符编码】改成"UTF-8",点击…

    2022年5月5日
    53
  • app弱网测试_热血神器刀设置教程

    app弱网测试_热血神器刀设置教程01.APP弱网测试背景App在使用的过程中,难免会遇到不同的弱网络环境,像在公车上、在地铁、地下车库等。在这种情况下,手机常常会出现网络抖动、上行或下行超时,导致APP应用中出现丢包延迟,从而影响用户体验。作为软件测试工程师,我们要在app上线前做一定弱网络环境场景模拟,查看app在弱网络环境下是否存在某些未知的问题。例如: 客户端卡死、崩溃等异常 核心功能导致软件不能正常运行 存在有损害用户利益或被用户额外获利的机会 是否有合理的…

    2025年6月18日
    1
  • SQL Server 2008还原数据库时出现“备份集中的数据库备份与现有的数据库不同”的解决方法

    SQL Server 2008还原数据库时出现“备份集中的数据库备份与现有的数据库不同”的解决方法引言 nbsp nbsp nbsp nbsp 现在在做项目 由于每个人是分模块的 所以大家的测试数据都不同步 导致好多时候会因为别人填的数据不同而调半天的错 所以我还是自己还原一个数据库 自己填自己的数据吧 nbsp nbsp 报错 nbsp nbsp nbsp nbsp nbsp 之前还原过很多个数据库都没什么问题 这次也是按照之前的步骤 先建立了一个目标数据库 之后选择源文件进行还原 最后报了这么一个错 解决方法 nbsp 1 nbsp 首先我们

    2025年6月20日
    1
  • java jwt 单点登录_JWT实现单点登录

    java jwt 单点登录_JWT实现单点登录importcom.atguigu.commonutils.JwtUtils;importcom.atguigu.commonutils.MD5;importcom.atguigu.eduservice.entity.UcenterMember;importcom.atguigu.eduservice.entity.vo.RegisterVo;importcom.atguigu.edus…

    2022年5月21日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号