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='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', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 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 操作的更多相关文章
- js点击左右滚动+默认自动滚动类
js点击左右滚动+默认自动滚动类 点击下载
- js去掉浏览器右键点击默认事件(+vue项目开启右键行为)
js去掉浏览器右键点击默认事件 1.阻止整个页面所有的右击事件 document.oncontextmenu = function(){ return false;} 2.特定的区域/元素 docum ...
- JS 阻止浏览器默认行为和冒泡事件
JS 冒泡事件 首先讲解一下js中preventDefault和stopPropagation两个方法的区别: preventDefault方法的起什么作用呢?我们知道比如<a href=& ...
- 用 JS 点击左右按钮 使图片切换 - 最精简版-ljx2380000-ChinaUnix博客
body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...
- selenium—JS点击方法
package com.allin.pc;import java.util.NoSuchElementException;import org.openqa.selenium.By;import or ...
- js阻止浏览器默认行为
js阻止浏览器默认行为 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...
- 问题:关于贴友一个用js传递value默认值的简单实现
需求和代码如下: “这是我的代码:” 1: <input type="text" id="price2" value="333"/&g ...
- 设置UIButton的文字居右显示 去掉点击默认置灰效果
1.设置UIButton的文字居右显示 [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight]; ...
- JS的replace默认只替换第一个匹配项
1. JS的replace默认只替换第一个匹配项. 解决方法: 使用正则表达式进行匹配替换[ ①.replace(new RegExp(②,"g") ,③); ] ①:包含 ...
随机推荐
- (视频) 《快速创建网站》2.1 在Azure上创建网站及网站运行机制
现在让我们开始一天的建站之旅. 本文是<快速创建网站>系列的第2篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http:// ...
- JSON in JavaScript Asp.net
首先官方网站 http://www.json.org/js.html 下载 json2.js 到Github 中下载 https://github.com/douglascrockford/JSON ...
- jQuery 更改checkbox的状态,无效
今天写页面遇到复选框动态全选或全不选问题,正常写法如下: $("#tb").find("input[type='checkbox']").attr(" ...
- 【转】虚拟机VMware3种网络模式(桥接、nat、Host-only)的工作原理
VMware网络配置详解一:三种网络模式简介 安装好虚拟机以后,在网络连接里面可以看到多了两块网卡: 其 中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口, ...
- 点击jqGrid表格,弹出需要的表格的数据
首先,我们先定义一个函数,然后在JQuery里面直接引用就可以了, function GetJqGridRowValue(jgrid, code) { var KeyValue = "&qu ...
- ORA-01858: 在要求输入数字处找到非数字字符
数据库 date 字段问题 insert into WK_RE_LE (DACL_FILE_ID,DACL_GROUP_ID,BDCDYH,DACL_LENGTH,ISVALID,DACL ...
- Altium Designer 出现错误提示(警告)adding items to hidden net GND/VCC
一般出现这个提示,不是错误. 可以取消net 网格标号 这样就不会报这个警告了. 还可以设置规则,不让它报告. 点击确定,但是再次打开工程时有得警告这个错误了.我想,还是取消NET标注.
- linux 进程管理相关内容
简介 当我们运行程序时,Linux会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立运行,不受其他程序的干扰.这个特殊的环境就称为进程. 每个 Linux 命令都与系统中 ...
- vim linux SecureCRT vim颜色的设置
解决方法: 1.首先按照环境一的方法检查一下,如果环境一的情况不在进行第二步. 2.修改终端TERM这个环境变量: 1)export命令 临时生效 # echo $TERM xterm #如果结果 ...
- Semiautomated IMINT Processing Baseline System——翻译
题目 半自动的IMINT(图像情报)处理基准系统 摘要 SAIP ACTD(半自动图像情报处理高级概念技术展示项目)的目的是,通过战略上的传感器采集,使图像成为指挥官掌控整个战场的主要源头.该采集系统 ...