• 纯前端模板文件下载如何精确控制下载的文件名字


    在写项目的时候,遇到了一个需要把给定的文件放到页面中,然后用户点击下载按钮将这个文件下载下来,我将其存入了云服务之中(这个云服务是不会清空的,内存又不值几个钱),但是当我下载的时候,下载的文件名是存到服务器地址的路径名,出现了这个问题。 然后我用a标签的dowmLoad属性指定文件下载名字,依然没有效果。

    从网上一搜,原来是服务器发送的请求头里控制了这个属性,让浏览器觉得自己设置的没有服务器给的靠谱。

     方法!!!!

    这个时候,我们可以通过Blob对象和URL.createObjectURL()来实现,就是先将他搞过来成为前端的数据,然后前端用这个数据生成一个文件,最后给他赋予我们想给他的名字,就成功的实现了。

    1. const download = () => {
    2. const fileUrl = "https://***************************************/1700023798306.docx";
    3. const fileName = "测试名字.docx";
    4. fetch(fileUrl)
    5. .then(response => response.blob())
    6. .then(blob => {
    7. // 创建一个虚拟的下载链接
    8. const link = document.createElement("a");
    9. link.href = URL.createObjectURL(blob);
    10. // 设置下载属性,并指定文件名
    11. link.download = fileName;
    12. // 将链接添加到文档中,并触发点击事件
    13. document.body.appendChild(link);
    14. link.click();
    15. // 移除链接
    16. document.body.removeChild(link);
    17. });
    18. };

     

    划重点

    这个方法有点新!!可能旧版本的浏览器兼容性没有那么好。

  • 相关阅读:
    如何完成企业数据可视化?要从五个方面展开
    flex布局回顾
    Linux应急响应学习
    使用scales包自定义ggplot2坐标轴刻度和标签
    线程的生命周期
    AB实验:科学归因与增长的利器
    SpringBoot电商项目前后端界面搭建
    Spring事务的传播行为
    RGB转BMP——格式转换
    技术分享 | 测试平台开发-前端开发之数据展示与分析
  • 原文地址:https://blog.csdn.net/a_strong_pig/article/details/134464017