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") ,③); ] ①:包含 ...
随机推荐
- commandline (命令行)登录mysql
mysql登录在命令行登录的时候是通过mysql的里面的程序的录的 其登录格式有两种:(在oracle上看到的是列出这两种,不要既有全参数名又有缩写参数名.) 1.全参数名登录释例 mysql --h ...
- vs2012中使用Icenium开发应用
Developing a Cross Platform Mobile App in Visual Studio using JavaScript & HTML5 http://www.dotn ...
- git技巧记录--blame
git blame [-L<m,n>] FilePath 可以查看代码每一行是谁写的(根据该行最后一次改动情况), -L表示要查看的行数范围, m: 起始行数, n:结束行数. 方便快速定 ...
- python中set集合
一.set集合的特性 访问速度快 天生解决重复问题 二.set变量申明 s1 = set() s2 = set([1,2,3]) 备注:第二种方式在set类中直接传入一个序列. 三.set类中方法大全 ...
- JDK动态代理和CGLIB的区别
Aspect默认情况下不用实现接口,但对于目标对象,在默认情况下必须实现接口 如果没有实现接口必须引入CGLIB库 我们可以通过Advice中添加一个JoinPoint参数,这个值会由spring自动 ...
- 0022 Java学习笔记-面向对象-继承、多态、组合
继承的特点 单继承:每个子类最多只有一个直接父类,注意是直接父类,间接父类个数不限 注意父类的概念:A-->B-->C-->D,在这里,ABC都是D的父类,C是D的直接父类,AB是D ...
- iOS上传App Store报错:this action cannot be completed -22421 解决方案
最近swift项目升了xcode8,提交版本时,遇到这个: this action cannot be completed -22421 瞬间懵逼,连具体报错原因都没有,只有一个代码 22421,找了 ...
- MS SQLServer 操作XML语句的存储过程
-- ================================================ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ...
- 百度CDN 网站SSL 配置
百度CDN SSL配置步骤 一般从SSL提供商购买到的证书是CRT二进制格式的. 1. 将 CRT 导入到IIS中, 然后从IIS中导出为PFX格式 2. 下载openssl,执行下面命令 提取用户证 ...
- (转)linux下vi命令大全
http://www.cnblogs.com/88999660/articles/1581524.html 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n ...