救急,非IE浏览器实现Javascript对文件上传与下载操作
来源:互联网 发布:股市行情数据 编辑:程序博客网 时间:2024/05/25 21:36
前几天遇到的问题,查了好多资料,大部分技术都是针对IE浏览器的,用的是ActiveXObject实现。但是本人就想用chrome浏览器实现,肿么办?
查了些资料,发现H5新增了一些功能能帮助我们解决这些问题。在这里就不描述IE浏览器如何实现了,网上一搜一堆,这里只帮助那些使用chrome的小伙伴解决问题,请叫我雷锋,不谢!!
JS下载文件:
使用技术:
1.Blob对象,
2.<a>标签的download属性,
3.URL.createObjectURL()方法,
具体实现:
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> var info = { "title": "", "name": "", "id": "", "content": "", "url": "" } function downloadFile(fileName,content){ var aLink=document.createElement("a"), //新建a标签,用H5中a标签的download属性实现文件的下载功能 /* * 创建Blob对象(binary large object二进制大对象),用于存储二进制文件字段类型, * 第一个参数为传入的数据(数组形式),第二个参数为数据类型(JSON形式) */ blob=new Blob([content],{type:"txt/json"}), e=document.createEvent("HTMLEvents"); //创建自定义的事件 e.initEvent("click",false,false); //初始化事件,一参初始化事件类型,二参是否事件冒泡,三参是否阻止默认事件 aLink.download=fileName; //设置下载文件的文件名 /* *设置下载的文件url地址,用URL的createObjectURL方法创建blob对象的url地址 * 用于下载访问blob内容。 */ aLink.href=URL.createObjectURL(blob); aLink.dispatchEvent(e); //把自定义的事件分发绑定给新建的a标签,给a标签绑定事件 aLink.click(); //运行a标签的点击事件,进行文件的下载 } downloadFile("info.json",JSON.stringify(info)); </script> </body></html>
当然,文件的名称可以改成自己的.txt形式。
JS上传文件:
使用技术:
1.FileReader API,
2. <input type="file">
FileReader为H5的API,实现对本地文件的读取功能。把file或blob对象写入内存。
FileReader有4个方法,6个事件。
具体实现:
HTML:
<input type='file' id='file'>
JS:
var f=document.getElementById("file");f.onchange=function(ev){ var obj =window.event||ev; //兼容浏览器 var files=obj.target.files; if(files.length>0){ var file=files[0]; //取得导入的第一个文件 var reader=new FileReader(); //创建FileReader对象 reader.readAsText(file,"gbk"); //设置读取方式为Text,字符编码为GBK reader.onload=function(){ var result=this.result; //读取成功后结果存放在result属性中 console.log(result); } } }
续写上传文件----读取Excel文件内容
使用技术:
1.xlsx.js和jszip.js额外库文件,
2.FileReader API,
3.<input type="file" id="upload">
具体实现:
HTML:
<input type="file" id="upload">JS:
var f=document.getElementById("upload");f.onchange=function(){ var files=this.files; if(files.length>0){ var file=files[0]; readDataByType(file); }}function readDataByType(file){ var name=file.name, //取得File的名字 nameArr=name.split("."), type=nameArr[nameArr.length-1], //取得文件的扩展名 reader=new FileReader(); switch(type){ case "xls": case "xlsx": reader.readAsBinaryString(file); //以二进制方式读取文件 reader.onload=function(f){ var result=this.result; var wb=XLSX.read(result,{type:"binary"}); //以二进制方式读取excel文件 var sheet=wb.Sheets[wb.SheetNames[0]]; //通过第一个sheet表名找到对应的sheet表 var jsono=XLSX.utils.sheet_to_row_object_array(sheet); //读取sheet表中的数据为JSON格式 var data=""; for(var i in jsono){ //遍历JSON对象 var str=""; for(var item in jsono[i]){ str+=jsono[i][item]+" "; } data+=str+"\n"; } console.log(data); } ;break; }}
2 0
- 救急,非IE浏览器实现Javascript对文件上传与下载操作
- 非ie浏览器实现javascript的fireEvent方法
- javascript对上传文件的相关操作
- IE与非IE浏览器调用PC摄像头拍摄并且上传
- IE与非IE浏览器调用PC摄像头拍摄并且上传
- IE与非IE浏览器调用PC摄像头拍摄并且上传
- JavaScript/Jsp 实现对数据库的增删改查和简单的下载上传文件
- Javascript文件操作 (IE)
- Javascript文件操作 (IE)
- php+ajax上传文件或者图片(支持非ie浏览器)
- ActivexObject 区分IE浏览器与非IE浏览器
- 实现IE浏览器全屏幕操作
- struts 实现文件上传与下载
- struts 实现文件上传与下载
- struts 实现文件上传与下载
- struts 实现文件上传与下载
- Jsp中实现文件上传与下载
- struts 实现文件上传与下载
- [SMOJ1419]受欢迎的奶牛
- Mac os 文件复制
- Android多线程的四种方式
- Shiro缓存整合EhCache
- 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
- 救急,非IE浏览器实现Javascript对文件上传与下载操作
- Android截屏总结
- 使用ffmpeg合并2路视频
- 大数据与深度学习有什么区别?
- 微信开发获取openID与发送客服消息
- .NET Framework的结构体系
- jsonp
- 目标跟踪算法汇总及其相关论文
- HTML5 进阶系列:indexedDB 数据库