1 页面HTML内容
2 获取input[file]元素
3 对获取的file元素操作,也就是操作fileReader属性
1:Blob
2: File
3: FileList
4: FileReader
FileList :
这里,默认状态下选择文件 每次files属性上FileList对象里只有一个file文件。
file对象中包含了name 文件名size type 文件类型lastModified 最后修改时间;
FileReader:异步读取本地文件内容;包括File 和Blob ;
创建FileReader对象读取file文件
关于fileReader的几个属性:
FileReader.error 只读一个 DOMException 代表在读取文件中出现的错误。 FileReader.readyState 只读一个数字表明的状态FileReader。这是以下之一:
FileReader.result 只读文件的内容。该属性仅在读取操作完成后才有效,并且数据的格式取决于使用哪种方法来启动读取操作。
fileReader的几个事件处理程序:
1 . FileReader.onbort:在读取操作中止时触发。
2 . FileReader.onerror:在读取操作遇到错误时触发。
3 . FileReader.onload:在读取操作成功完成时触发。
4 . FileReader.onloadstart:在开始阅读时触发。
5 . FileReader.onloadend:无论是否成功 只要读取操作完成都会触发。
6 . FileReader.onprogress:阅读Blob内容时触发。
FileReader的方法:
1 . FileReader.abort()中止读取操作
2 . FileReader.readAsArrayBuffer()完成时result属性包含ArrayBuffer表示文件数据
3 . FileReader.readAsBinaryString()完成时result属性将包含来自文件的原始二进制数据作为字符串。
4 . FileReader.readAsDataURL()完成时result属性包含data:表示文本数据的URL;
5 . FileReader.readAsText()完成时result属性包含文本的内容作为文本字符串。
js中点击一个按钮弹出一个file文件框的步骤如下:
1.在文件夹中创建一个html文件“test”。
2.在test文件中添加一个html的框架。
3.添加两个input,一个是button,一个是file把id设置为“open”style类型设置为“display:none”不显示。
4.打开后我们发现只显示这一个“打开文件”按钮。
5.现在我们给button添加onclick事件,调用openfile触发id为“open”的file。
6.现在我们在浏览器中点击“打开文件”文件按钮就会弹出选择文件路径对话框了。这样就解决了js中点击一个按钮弹出一个file文件框的问题了。
浏览器安全性已经大大提高,要实现图片上传预览不是那么简单了
不过有很多变通或先进的方法来实现
例如ie7/ie8的滤镜预览法,firefox 3的getAsDataURL方法
具体可以参考这个图片上传预览效果