• js 点击默认另存 ,不是打开 Blob 操作


    function savepic(obj) {
        if (memFileObj != undefined) {
            obj = memFileObj;
        }
        else {
            memFileObj = obj;
        }
        if (document.all.a1 == null) {
            objIframe = document.createElement("IFRAME");
            $(objIframe).appendTo("body");
            objIframe.outerHTML = "<iframe name='a1' style='0;hieght:0' src='" + $(obj).attr("href") + "'></iframe>";
            re = setTimeout("savepic()", 1);
        }
        else {
            clearTimeout(re);
            pic = window.open($(obj).attr("href"), "a1");
            pic.document.execCommand("SaveAs");
            var _parentElement = $("[name='a1']");
            if (_parentElement) {
                $(_parentElement).remove();
                //_parentElement.removeChild(a1);
            }
        }

    其他浏览器,例如Chrome浏览器,可以使用保存blob数据流的办法。

    给你两个函数供参考

    一个用来保存URL,一个用来保存文本。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function saveAs(Url,filename){
    var blob=new Blob([''], {type:'application/octet-stream'});
        var url = webkitURL.createObjectURL(blob);
        var a = document.createElementNS(xhtml,'a');
        a.href = Url;
        a.download = filename; 
        var e = document.createEvent('MouseEvents');
        e.initMouseEvent('click'truefalse, window, 0, 0, 0, 0, 0, falsefalsefalsefalse, 0, null);
        a.dispatchEvent(e);
        webkitURL.revokeObjectURL(url);
    function saveText(t,filename){
    var mime='text/plain';
    saveAs(('data:'+mime+';charset=utf-8;base64,' + Base64.encode(t)),filename)
    }
    function savepic(obj) {
        if (memFileObj != undefined) {
            obj = memFileObj;
        }
        else {
            memFileObj = obj;
        }
        if (document.all.a1 == null) {
            objIframe = document.createElement("IFRAME");
            $(objIframe).appendTo("body");
            objIframe.outerHTML = "<iframe name='a1' style='0;hieght:0' src='" + $(obj).attr("href") + "'></iframe>";
            re = setTimeout("savepic()", 1);
        }
        else {
            var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
            var isOpera = userAgent.indexOf("Opera") > -1;
    
            clearTimeout(re);
            pic = window.open($(obj).attr("href"), "a1");
            pic.document.execCommand("SaveAs");
            
           
            var frameElement = $("[name='a1']");
            if (frameElement) {
                $(frameElement).remove();
            }
    
    //        if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) { // is ie
    
    //        } else { //not ie
    
    //            saveAs($(obj).attr("href"), $(obj).attr("href").substring($(obj).attr("href").lastIndexOf('/') + 1));
    //        }
        }
    }
    
    function saveAs(Url, filename) {
        var blob = new Blob([''], { type: 'application/octet-stream' });
        var url = URL.createObjectURL(blob);
    
        blobSaveAs(blob, filename);
        //    reader.file = file;
    
        //    reader.onerror = function(e) {
        //        switch (e.target.error.code) {
        //            case e.target.error.NOT_FOUND_ERR:
        //                alert('File Not Found!');
        //                break;
        //            case e.target.error.NOT_READABLE_ERR:
        //                alert('File is not readable');
        //                break;
        //            case e.target.error.ABORT_ERR:
        //                break; // noop
        //            default:
        //                alert('An error occurred reading this file.');
        //        };
        //    };
    
        //    reader.onabort = function(e) {
        //        alert('File read cancelled');
        //    };
        //    reader.onload = function(e) {
        //        var blob = new Blob(e.target.result, { type: 'application/octet-stream' });
        //        //bb.append(this.result);
        //       
        //    }
        //    reader.readAsBinaryString(file);
        //}
    
    }
    
    function blobSaveAs(blob, filename) {
        var type = blob.type;
        var force_saveable_type = 'application/octet-stream';
        if (type && type != force_saveable_type) { // 强制下载,而非在浏览器中打开
            var slice = blob.slice; // || blob.webkitSlice || blob.mozSlice;
            blob = slice.call(blob, 0, blob.size, force_saveable_type);
        }
        var url = URL.createObjectURL(blob);
        var save_link = document.createElementNS('xhtml', 'a');
        save_link.href = url;
        save_link.download = filename;
        var event = document.createEvent('MouseEvents');
        event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        save_link.dispatchEvent(event);
        URL.revokeObjectURL(url);
    }
    
    function readAsBinaryString() {
        var file = document.getElementById("file").files[0];
        var reader = new FileReader();
        //将文件以二进制形式读入页面
        reader.readAsBinaryString(file);
        reader.onload = function(f) {
            var result = document.getElementById("result");
            //显示文件
            result.innerHTML = this.result;
        }
    }
    <div><input type="file" id="file" />
            <input type="button" value="读取二进制数据" onclick="readAsBinaryString()" />
            <div id="result" name="result"></div></div>
  • 相关阅读:
    Silverlight生命周期概述
    NVolecity 处理DataTable 小记
    Adobe CS6 安装的时候,安装到AdobeHelp 死掉的解决方法
    验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate 的解决办法
    为什么要写博客
    [原创]SQL发音考证(搜寻SQL86标准)
    [转载]《暗时间》:为什么你应该(从现在开始就)写博客
    [转载]《暗时间》:书写是为了更好的思考
    [原创]手把手教你写网络爬虫(1):网易云音乐歌单
    javascript简单的日历实现《转》
  • 原文地址:https://www.cnblogs.com/xdot/p/5028640.html
Copyright © 2020-2023  润新知