zoukankan      html  css  js  c++  java
  • 页面临时添加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
            });
        }
    

      

  • 相关阅读:
    linux清理缓存
    HTMl5的sessionStorage和localStorage
    jQueryValidation插件API 学习
    notepad++去空格空行技巧
    关于前端的一些疑问
    ios上传图片遇见了一个TimeoutError(DOM Exception 23)异常
    js不执行的问题
    input type=file 怎么样调取用户手机照相机
    在调用方法给安卓传参遇到的问题
    canvas压缩图片成base64,传到后台解码需要注意的问题
  • 原文地址:https://www.cnblogs.com/hzb462606/p/15398457.html
Copyright © 2011-2022 走看看