File API 读取上传的文件
1, 在html 文档中,<input type="file"> 我们可以选择文件进行上传,但这时只能上传一个文件。如果加上multiple 属性,可以上传多个文件,上传多个文件时要按shift 或 ctrl进行选择。
<input type="file" multiple id="file">
2, file API 就是提供了一些接口来读取我们上传的文件。input 元素 在js 就是一个对象,它有一个files属性,表示我们上传的文件。它是一个类数组,有一个length 属性,表示我们上传了多少个文件。要想访问其中的一个文件,提供一个索引值, 如果只上传了一个文件,那就是files[0]. 每个文件也有一系列属性:name, type, size 等。
var file = document.getElementById("file"); // 得到<input type="file"> 这个元素。
file.files[0] // 得到上传的第一个文件。
file.files[0].name // 得到文件名称。
3, 当选择文件进行上传后,会触发change 事件,可以监听该事件获得我们上传的文件信息。
<input type="file" multiple id="file">;
<script>
var file = document.getElementById("file");
file.addEventListener("change", fileInfo);
function fileInfo(){
let fileList = this.files;
for(let i=0; i<fileList.length; i++){
console.log(fileList[i].name, fileList[i].type);
}
}
</script>
4, FileReader API 提供了更进一步的读取文件的接口,可以读取文件并把结果保存起来。例如 可以读取我们上传的图片并把图片显示到html文档中。 但该API 读取文档是异步的,和AJAX 的用法一致。
1, 创建一个filereader 对象, var reader = new FileReader();
2, 读取文件,有以下几个方法 读取文件, 它们接受一个参数,就是我们上传的文件,读取结果保存在该对象的result属性中。
readAsText(), 读取文件内容,结果为一串代表文件内容的文本;
readAsDataURL(), 读取文件内容,结果为一个 data: 的 URL;
readAsBinaryString 读取文件内容,结果为一个 二进制字符串;
3, 异步读取, 所以需要监听事件, 有三个重要的事件,progress事件,文件读取过程中不停地触发; load事件,读取完毕时触发;error 读取过程中有问题时触发。
4, 读取成功后的回调函数。
5, 其实file(我们上传的文件file[0]) 还有一个slice 方法,对我们上传的文件进行分割, 获取部分数据。 它接受两个参数,读取的起始位置,读取的结束位置(但不包括此位置);和数组的slice 方法是一致的,只不过这里是,返回的是我们截取到文件, 这时可以读取到这个文件。readAsText();
File API 读取上传的文件的更多相关文章
- Springboot/SpringMvc 读取上传 xls 文件内容
/** * 读取上传 xls 内容返回 * @param file * @return */@RequestMapping(value = "/read.xls")@Respons ...
- [Node.js] 使用File API 异步上传文件
原文地址:http://www.moye.me/2014/11/05/html5-filereader/ 最近在做一个网盘的项目,不出意外的涉及到大文件的上传,那么问题来了:如何实时的显示文件上传的进 ...
- webapi读取上传的文件流
逻辑说明 这里未引用System.Web.Mvc. 主要使用MultipartMemoryStreamProvider对象从Request中获取文件流. var provider = new Mult ...
- .NetCore上传多文件的几种示例
本章和大家分享的是.NetCore的MVC框架上传文件的示例,主要讲的内容有:form方式提交上传,ajax上传,ajax提交+上传进度效果,Task并行处理+ajax提交+上传进度,相信当你读完文章 ...
- java-plupload上传大文件
参考链接: https://blog.csdn.net/hjf_1291030386/article/details/74784172 https://www.cnblogs.com/tengyunh ...
- 文件上传fileupload文件接收
form表单提交数据到servlet后,使用fileupload进行接收. fileupload 是由 apache 的 commons 组件提供的上传组件.它最主要的工作就是帮我们解析 reques ...
- B/S上传大文件的解决方案
第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = ...
- http上传txt文件
http通过post方式上传txt文件 可以参考 https://www.cnblogs.com/s0611163/p/4071210.html /// <summary> /// Htt ...
- web页面上传大文件有没有好的解决方案
本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...
随机推荐
- nginx跨域配置
假设前端页面的地址为: 192.168.1.1/arcgis40/index.html 页面物理路径为: X:\nginx-1.9.15\html\arcgis40 那么请求服务时,当ajax代码如下 ...
- CentOS7安装ftp服务器
一.问题的提出 想在windows环境下远程连接CentOS的文件并编辑 二.问题的解决 # 安装vsftp服务[root@localhost ~]# yum -y install ftp vsftp ...
- 未能加载文件或程序集“projectname, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。
- Xubuntu VNC Xfce4
sudo mousepad ~/.vnc/xstartup #!/bin/sh # Uncomment the following two lines for normal desktop: unse ...
- Android学习笔记 - BitmapFun解析
如果图片资源是静态的,当我们要在View上显示图片时,只需要简单的将图片赋值给ImageView就可以了,但如果需要浏览网络上的图片时该如何做呢?有可能图片很大,有可能网速很慢并且不稳定,这种情况下该 ...
- openlayer3 获取feature
feature是放在vector的source中,所以在获取feature前,需先vector.getSource(),再去getFeature().
- AC6102 开发板千兆以太网UDP传输实验
AC6102 开发板千兆以太网UDP传输实验 在芯航线AC6102开发板上,设计了一路GMII接口的千兆以太网电路,通过该以太网电路,用户可以将FPGA采集或运算得到的数据传递给其他设备如PC或服务器 ...
- session原理及实现共享
一.session的本质http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你.那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录邮箱 ...
- C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)
C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT) private Microsoft.Office.Intero ...
- eclipse左侧不见
我的解决办法: eclipse---> Window --->Perspective--> Open Perspective-->Java