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. [转]IntelliJ IDEA 使用心得与常用快捷键

    IntelliJ IDEA 使用心得与常用快捷键 那种酸爽,根本说不出来—————————————————————————— by: Jimi没有BondJimi是谁? 就是洒家啊! 刚开始学习写Ja ...

  2. BufferedReader与Scanner的区别

    在Java中,我们都知道Java的标准输入串是System.in.但是我们却很少在Java中看到谁使用它,这是因为我们平时输入的都是一个字符串或者是一个数字等等.而System.in提供的read方法 ...

  3. html5开发移动页面去掉点击出现的透明阴影----&&-----元素垂直居中

    [摘要:做好的页里正在脚机端测试时,发明局部扫瞄器,tap后会涌现一个半通明的灰色配景,(被批...),起先认为是outline作祟,减上后发明出反映,末了发明是tap后的配景下明,要重设那个]   ...

  4. dataset转list实体

    private static object GetDefaultValue(object obj, Type type) { if (obj == DBNull.Value) { return def ...

  5. activity 所需jiar包

    activity下载后有很多jar包有的jar包不一定用得上,也有些jar是重复的,这里就整理了一下必要的jar包 路径.. \activiti-5.19.0.2\wars\activiti-expl ...

  6. 安装Ruby下的compress失败

    1.  安装ruby 1.9.3     进入ruby官网,点击下载,在下载页面有一个"安装页面"链接,进入之后找到RailsInstaller(windows ruby安装程序) ...

  7. Asp.net MVC5引用ExtJS6

    摘要:VisualStuio2015 asp.net mvc如何引用ExtJS6,使用BundleConfig. 首先下载ExtJS6.0 gpl版.ExtJS有自己的程序框架,但我们需要asp.ne ...

  8. 在eclipse上开发nodejs

    首先到官网下载nodejs.地址:https://nodejs.org/en,可根据自己的操作系统选择下载. 安装好后.进入命令行输入node ,然后输入console.log("hello ...

  9. sys,os,模块-正则表达式

    # *__conding:utf-8__* """"我是注释""" sys,os模块 import sysimport os pr ...

  10. Http状态码(转)

    什么是Http状态码?(转自http://bbs.tui18.com/thread-11597640-1-1.html) 百度百科上解释为:HTTP状态码(HTTP Status Code)是用以表示 ...