前端使用js读取文件操作

时间: 2018-07-17阅读: 2822标签: 文件

首先我们定义一个input标签type="file"

<input type="file" onchange="jsReadFiles(this.files)"/>


然后我们定义一个jsReadFiles的方法将文件作为参数;当上传文件的时候读取这个文件

//js 读取文件
function jsReadFiles(files) {
	if(files.length) {
		var file = files[0];
		var reader = new FileReader(); //new一个FileReader实例
		if(/text+/.test(file.type)) { //判断文件类型,是不是text类型
			reader.onload = function() {
				$('body').append('<pre>' + this.result + '</pre>');
			}
			reader.readAsText(file);
		} else if(/image+/.test(file.type)) { //判断文件是不是imgage类型
			reader.onload = function() {
				$('body').append('<img src="' + this.result + '"/>');
			}
			reader.readAsDataURL(file);
		}
	}
}


这里用到了html5的FileReader这个对象来完成;

FileReader接口的方法:

readAsBinaryString   file    将文件读取为二进制编码
readAsText    file,[encoding]  将文件读取为文本,其中第二个参数是文本的编码方式,默认值为 UTF-8
readAsDataURL  file  将文件读取为DataURL
abort  (none)     中断读取操作(无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中)

相关事件:

onabort :中断
onerror :  出错
onloadstart :  开始
onprogress :  正在读取
onload  :  成功读取
onloadend  :  读取完成,无论成功失败

文件一旦开始读取,无论成功或失败,实例的 result 属性都会被填充。如果读取失败,则 result 的值为 null ,否则即是读取的结果。

如果读取文件过大的话fileReader允许分段读取文件;

var blob_file;
if(file.webkitSlice) {  //chrome
        blob_file= file.webkitSlice(start, end + 1, 'text/plain;charset=UTF-8');
} else if(file.mozSlice) { //Firefox
        blob_file= file.mozSlice(start, end + 1, 'text/plain;charset=UTF-8');
}

图片上传成功,只是图片路径变成了base64编码的形式。


顺便唠叨一下base64编码的优缺点:

优点:

1.减少了http请求。

2.没有跨域的问题。

3.直接放在路径里不需要清理缓存。

缺点:

1.IE6/7不支持(不过这个问题不大);

2.base64本质上是将图片以二进制的字母展示,字符量过大无形中增加了css/html文件的大小;


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/934

TypeScript声明文件

当使用第三方库时,我们需要引用它的声明文件,才能获得对应的代码补全、接口提示等功能。假如我们想使用第三方库 jQuery,一种常见的方式是在 html 中通过 <script> 标签引入 jQuery

解决nginx和php使用ckfinder无法上传大文件的问题

cms内容发布系统上传不了大文件,当上传超过32M文件时就上传不了,提示:无效的文件. 文件尺寸太大。分析文件上传过程:browser --> nginx --> php ,需要修改 nginx.conf和php.ini

前端实现文件在线预览txt,pdf,doc,xls,ppt几种格式

做法就是使用iframe标签,只需要配置src就可以,根据文件后缀判断如果是office的类型就在url前加上https://view.officeapps.live.com/op/view.aspx?src=

nodejs对项目下所有空文件夹创建gitkeep

项目/框架初始化时可能需要保留一些空文件,这时候就需要批量新增gitkeep

webpack 如何压缩文件

本节我们学习如何压缩 webpack 中的文件。在实际应用中,为了缩小打包后包的体积,我们可能需要将 CSS 和 JS 文件进行压缩,这需要用到 webpack 中的不同插件来实现。

前端实现文件下载功能

通过window.open()打开新页面下载文件;通过a标签打开新页面下载文件;通过文件流的方式下载;如何实现批量下载,且打包文件

原生JS使用Blob导出csv文件

最近在做关于文件下载的需求:前端调用接口,然后对返回数据进行过滤、格式化,然后按表格内容拼接生成csv文件,让用户下载。数据中存在 ‘,‘ 逗号问题处理:将整个数据用双引号(英文格式)包裹起来,这样会显示成一个单元格。

前端批量获取文件并打包压缩解决方案

前端文件下载我相信很多小伙伴并不陌生,下载文件的形式也有很多,例如,后端返回一个文件地址,我们把地址放在<a></a>标签里面点击下载;或者是通过后端接口返回文件流,我们再对流进行一系列的操作等等

PHP遍历目录和文件及子目录和文件

正常直接使用opendir方法,就可以读到所有的目录和文件。文件可以直接记录下来,目录则需要再进一步获取里边的文件信息。也就是,如果当前读出来是目录,则需要再次调用函数本身(递归)

PHP下载大文件失败,并限制下载速度

PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错;这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出;解决:分段下载,并限制下载速度;

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!