• 页面临时添加a元素来模拟上传下载


    页面:

    <input type="file" value="文件" id="btn">
    

      

    JS:

    window.onload = () => {
        let btn = document.querySelector("input#btn");
        btn.addEventListener("change", () => {
            let file = btn.files[0];
            let a = document.createElementNS("http://www.w3.org/1999/xhtml", 'a'); // 新建带命名空间的<a>元素
            a.href = window.URL.createObjectURL(file); // 创建URL引用
            a.download = "picNo1.jpg"; // 下载后的文件命名
            document.body.appendChild(a); // 添加临时元素
            a.click(); // 触发点击事件
            document.body.removeChild(a); // 删除临时元素
            window.URL.revokeObjectURL(a.href); // 删除URL引用
        });
    };
    

      

    Eg:

    模拟通过base64字符串下载文件

    页面:

    <input type="button" value="文件" id="btn">
    

      

    JS:

        btn.addEventListener("click", () => {
            let picBase64 = `data:image/jpeg;base64,/9j/4QAYRXh....`;
    
            let a = document.createElementNS("http://www.w3.org/1999/xhtml", 'a'); // 新建带命名空间的<a>元素
            a.href = window.URL.createObjectURL(base64ToBlob(picBase64)); // 创建URL引用
            a.download = "picNo1.jpg"; // 下载后的文件命名
            document.body.appendChild(a); // 添加临时元素
            a.click(); // 触发点击事件
            document.body.removeChild(a); // 删除临时元素
            window.URL.revokeObjectURL(a.href); // 删除URL引用
        });
    
        function base64ToBlob(code) {
            var parts = code.split(';base64,');
            var contentType = parts[0].split(':')[1];
            var raw = window.atob(parts[1]);
            var rawLength = raw.length;
            var uInt8Array = new Uint8Array(rawLength);
            for (var i = 0; i < rawLength; ++i) {
                uInt8Array[i] = raw.charCodeAt(i);
            }
            return new Blob([uInt8Array], {
                type: contentType
            });
        }
    

      

  • 相关阅读:
    P2639 [USACO09OCT]Bessie的体重问题Bessie's We…
    P2871 [USACO07DEC]手链Charm Bracelet
    P1983 车站分级
    P1038 神经网络
    P1991 无线通讯网
    P1546 最短网络 Agri-Net
    P1197 [JSOI2008]星球大战
    P1004 方格取数
    P1111 修复公路
    pd_ds 之 hash
  • 原文地址:https://www.cnblogs.com/hzb462606/p/15398457.html
Copyright © 2020-2023  润新知