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 读取上传的文件的更多相关文章

  1. Springboot/SpringMvc 读取上传 xls 文件内容

    /** * 读取上传 xls 内容返回 * @param file * @return */@RequestMapping(value = "/read.xls")@Respons ...

  2. [Node.js] 使用File API 异步上传文件

    原文地址:http://www.moye.me/2014/11/05/html5-filereader/ 最近在做一个网盘的项目,不出意外的涉及到大文件的上传,那么问题来了:如何实时的显示文件上传的进 ...

  3. webapi读取上传的文件流

    逻辑说明 这里未引用System.Web.Mvc. 主要使用MultipartMemoryStreamProvider对象从Request中获取文件流. var provider = new Mult ...

  4. .NetCore上传多文件的几种示例

    本章和大家分享的是.NetCore的MVC框架上传文件的示例,主要讲的内容有:form方式提交上传,ajax上传,ajax提交+上传进度效果,Task并行处理+ajax提交+上传进度,相信当你读完文章 ...

  5. java-plupload上传大文件

    参考链接: https://blog.csdn.net/hjf_1291030386/article/details/74784172 https://www.cnblogs.com/tengyunh ...

  6. 文件上传fileupload文件接收

    form表单提交数据到servlet后,使用fileupload进行接收. fileupload 是由 apache 的 commons 组件提供的上传组件.它最主要的工作就是帮我们解析 reques ...

  7. B/S上传大文件的解决方案

    第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname =  ...

  8. http上传txt文件

    http通过post方式上传txt文件 可以参考 https://www.cnblogs.com/s0611163/p/4071210.html /// <summary> /// Htt ...

  9. web页面上传大文件有没有好的解决方案

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

随机推荐

  1. nginx跨域配置

    假设前端页面的地址为: 192.168.1.1/arcgis40/index.html 页面物理路径为: X:\nginx-1.9.15\html\arcgis40 那么请求服务时,当ajax代码如下 ...

  2. CentOS7安装ftp服务器

    一.问题的提出 想在windows环境下远程连接CentOS的文件并编辑 二.问题的解决 # 安装vsftp服务[root@localhost ~]# yum -y install ftp vsftp ...

  3. 未能加载文件或程序集“projectname, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。

  4. Xubuntu VNC Xfce4

    sudo mousepad ~/.vnc/xstartup #!/bin/sh # Uncomment the following two lines for normal desktop: unse ...

  5. Android学习笔记 - BitmapFun解析

    如果图片资源是静态的,当我们要在View上显示图片时,只需要简单的将图片赋值给ImageView就可以了,但如果需要浏览网络上的图片时该如何做呢?有可能图片很大,有可能网速很慢并且不稳定,这种情况下该 ...

  6. openlayer3 获取feature

    feature是放在vector的source中,所以在获取feature前,需先vector.getSource(),再去getFeature().

  7. AC6102 开发板千兆以太网UDP传输实验

    AC6102 开发板千兆以太网UDP传输实验 在芯航线AC6102开发板上,设计了一路GMII接口的千兆以太网电路,通过该以太网电路,用户可以将FPGA采集或运算得到的数据传递给其他设备如PC或服务器 ...

  8. session原理及实现共享

    一.session的本质http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你.那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录邮箱 ...

  9. C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT)

    C# 调用Excel 出现服务器出现意外情况. (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT) private Microsoft.Office.Intero ...

  10. eclipse左侧不见

    我的解决办法: eclipse--->  Window --->Perspective--> Open Perspective-->Java