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='width: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='width: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>

js 点击默认另存 ,不是打开 Blob 操作的更多相关文章

  1. js点击左右滚动+默认自动滚动类

    js点击左右滚动+默认自动滚动类 点击下载

  2. js去掉浏览器右键点击默认事件(+vue项目开启右键行为)

    js去掉浏览器右键点击默认事件 1.阻止整个页面所有的右击事件 document.oncontextmenu = function(){ return false;} 2.特定的区域/元素 docum ...

  3. JS 阻止浏览器默认行为和冒泡事件

    JS 冒泡事件   首先讲解一下js中preventDefault和stopPropagation两个方法的区别: preventDefault方法的起什么作用呢?我们知道比如<a href=& ...

  4. 用 JS 点击左右按钮 使图片切换 - 最精简版-ljx2380000-ChinaUnix博客

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  5. selenium—JS点击方法

    package com.allin.pc;import java.util.NoSuchElementException;import org.openqa.selenium.By;import or ...

  6. js阻止浏览器默认行为

    js阻止浏览器默认行为 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  7. 问题:关于贴友一个用js传递value默认值的简单实现

    需求和代码如下: “这是我的代码:” 1: <input type="text" id="price2" value="333"/&g ...

  8. 设置UIButton的文字居右显示 去掉点击默认置灰效果

    1.设置UIButton的文字居右显示 [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight]; ...

  9. JS的replace默认只替换第一个匹配项

    1. JS的replace默认只替换第一个匹配项. 解决方法: 使用正则表达式进行匹配替换[   ①.replace(new RegExp(②,"g") ,③);   ] ①:包含 ...

随机推荐

  1. Android Studio教程--给Android Studio安装Genymotion插件

    打开Android Studio,依次[File]-[Settings] 在打开的settings界面里找到plugins设置项,点击右侧的“Browser..”按钮 在搜索栏里输入genymotio ...

  2. Swift - 访问通讯录-使用AddressBook.framework和AddressBookUI.framework框架实现

    1,通讯录访问介绍 通讯录(或叫地址簿,电话簿)是一个数据库,里面储存了联系人的相关信息.要实现访问通讯录有如下两种方式: (1)AddressBook.framework框架 : 没有界面,通过代码 ...

  3. 【Android】Mac安装EasyTether导致无法识别设备的问题

    正文 想让手机走PC网络,然后抓包,于是搜索一番后安装了一个叫EasyTether的软件.还没来得及测试,就忙着写代码去了,重启MAC以后就发现连不上手机了,一开始并没有怀疑是 EasyTether的 ...

  4. 安卓学习-- RecyclerView简单入门

    一.加入JAR包 第一感觉这个东东,好复杂,没ListView来的快,方便 在项目中加入android-support-v7-recyclerview.jar包 这个包在extras\android\ ...

  5. vs合并压缩css,js插件——Bundler & Minifier

    之前做了一个大转盘的抽奖活动,因为比较火,部分用户反馈看不到页面的情况,我怀疑js加载请求过慢导致,所以今天针对之前的一个页面进行调试优化. 首先想到的是对页面的js和css进行压缩优化,百度了下vs ...

  6. C文件编译、链接指令

    通过mac终端 输入指令: cc -c 文件名.c 可以把C文件编译成.o文件(其实是2进制文件) 然后通过指令 cc 文件名.o 把.o文件链接C文件所需要的C语言的底层库,成为可以直接运行的lin ...

  7. 项目管理之道--纪我的新书《PMP项目管理认证学习指南(第4版)》出版并预祝大卖!

    新年伊始,我最新的项目管理书籍——<PMP项目管理认证学习指南(第4版)>也出版了,真是新年新气象啊!翻译英文书籍是一件任重道远的工作,除了要具备扎实的基本功,熟悉相关的领域外,还需要细致 ...

  8. centos7 添加图形界面的功能

    一般安装centos最小版的时候默认没有图形界面 需要自己安装 sudo  yum groupinstall "GNOME Desktop" "Graphical Adm ...

  9. mysql set names 命令和 mysql 字符编码问题

    先看下面的执行结果: (root@localhost)[(none)]mysql>show variables like 'character%'; +--------------------- ...

  10. Linux系统管理命令之权限管理

    对于一个目录来说,x权限:可以cd进去 对于目录: 读:看 执行:进去 写:写操作 rw权限没有意义 umask 022     特殊权限: suid sgid 2种情况:对于文件:类似于suid对于 ...