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. C语言printf()输出格式大全

    1.转换说明符       %a(%A)     浮点数.十六进制数字和p-(P-)记数法(C99)       %c             字符       %d             有符号十 ...

  2. mysql java Cannot find the driver in the classpath!

    确保你的mysql-connector-java有没有配置好, 如何配置: 从oracle上把mysql-connector-java下下来放到java_home里面的extensions里面,然后在 ...

  3. 深入.net(数据类型)

    C#究竟为我们提供了哪些“数据类型”供我们使用?这些类型有什么样的“特征”? 数据类型的分类: --- 数据类型是存放数据的容器.那么我们就以它们“存放数据的方式”分类! 1.值类型:变量中直接存放着 ...

  4. 详解MySQL的用户密码过期功能

    这篇文章主要为大家详细介绍了MySQL的用户密码过期功能的相关资料,需要的朋友可以参考下   Payment Card Industry,即支付卡行业,PCI行业表示借记卡.信用卡.预付卡.电子钱包. ...

  5. WPF学习之路(十四)样式和模板

    样式 实例: <Window.Resources> <Style x:Key="BtnStyle"> <Setter Property=" ...

  6. 10个关于Java异常的常见问题

    这篇文章总结了十个经常被问到的JAVA异常问题: 1.检查型异常VS非检查型异常 简单的说,检查型异常是指需要在方法中自己捕获异常处理或者声明抛出异常由调用者去捕获处理: 非检查型异常指那些不能解决的 ...

  7. JavaScript Patterns 5.7 Object Constants

    Principle Make variables shouldn't be changed stand out using all caps. Add constants as static prop ...

  8. SSRS 的简单使用(二)

    经过上一篇的初始,我们已经做好了报表的准备工作,接下来我们进行报表的展示和其他一下操作,并且给出一些使用RS的方法方便大家日后能灵活使用. 步骤:        1.首先拖拽表格等进入到设计模板 点击 ...

  9. 使用国内 maven 镜像 代替国外 mirror

    使用maven的都知道国外的maven下载一个是比较慢,一个是因为被墙,一些jar包无法下载,非常老火. 比如出现类似下面的错误: Unknown host repo.maven.apache.org ...

  10. MySQL 调优基础(三) Linux文件系统

    Linux的文件系统有点像MySQL的存储引擎,它支持各种各样的文件系统.它最上层是通过 virtual files system虚拟文件系统作为一个抽象接口层来对外提供调用的.然后下层的各种文件系统 ...