关闭

前端使用js读取文件操作

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

首先我们定义一个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.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

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

关闭

html5:FileAPI 文件操作实战

HTML5 为我们提供了 File API 相关规范。主要涉及 File 接口 和 FileReader 对象 。本文整理了兼容性检测、文件选择、属性读取、文件读取、进度监控、大文件分片上传以及拖拽上传等开发中常见的前端文件操作。

Nodejs模块fs文件系统操作

node 的fs文档密密麻麻的 api 非常多,毕竟全面支持对文件系统的操作。文档组织的很好,操作基本分为文件操作、目录操作、文件信息、流这个大方面,编程方式也支持同步、异步和 Promise

css是什么格式的文件?

css指的是层叠样式表(Cascading Style Sheets),它是一种用来表现HTML或XML等文件样式的计算机语言,是用来表示html样式的一种编程语言,是可以做到网页和内容进行分离的一种样式语言。

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

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

html5中利用FileReader来读取文件

利用FileReader来读取文件的能够来实现即时预览的效果,这个也是在html5中才有的功能,readAsText():读取文本文件(可以使用TxT打开的文件),返回文本字符串,默认编码是UTF-8

PHP上传文件到阿里云OSS,nginx代理访问

阿里云OSS创建存储空间Bucket(读写权限为:公共读),拿到相关配置创建 oss.php 上传类 (基于thinkPHP5),访问 oss域名地址 不可在浏览器直接访问 可用nginx 代理

Linux上传文件的几种方式

在使用Linux系统服务器时,我们经常使用命令来上传文件到远程服务器的指定地址。虽然目前有很多流行的工具,比如XShell、XFTP、WinSCP、CRT等等,可是实际中,我们并不是经常使用工具来上传。主要是实际处理文件时

Node.js之删除文件夹(含递归删除)

应用场景:比如像Eclipse这样的IDE,右击项目,出现选项,点击选项中的删除,就可以删除这个项目及其下的子目录包含文件(使用electron开发的桌面端项目多少都会用到)。

js和css文件位置对页面性能有什么影响?

js脚本应该放在底部,原因在于js线程与GUI渲染线程是互斥的关系,如果js放在首部,当下载执行js的时候,会影响渲染行程绘制页面,js的作用主要是处理交互,而交互必须得先让页面呈现才能进行,所以为了保证用户体验,尽量让页面先绘制出来

vue组件内部引入外部js文件

之所以要做这个是因为,在一个组件内部需要引入一个js文件来定位。如果放在index.html,这样每个组件都会有这个js。所以需要在组件内单独引入。

点击更多...

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