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为核心 ...
随机推荐
- [转]在Ubuntu 14.04安装和使用Docker
在Ubuntu 14.04安装和使用Docker 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs Docker是一个开源软件,它可以把一 ...
- FTF登入tiny210开发板
配置环境一: 第一步:安装虚拟机 1)安装虚拟机+Linux12.04 2)安装FTP软件 第二步:配置超级终端(串口) 1)开 ...
- visual studio 两个以上sln 引用同一个project ,生成时会改变projectguid问题
当两个以上解决方案添加现有项,选择了同一个项目,那么在 sln 文件中,会自己带一个guid. 当打开两个解决方案,一个生成时,会影响另一个的project值,导致每次都看到了签出. 解决办法,打开共 ...
- Nodejs express 文件上传
文件上传 以下我们创建一个用于上传文件的表单,使用 POST 方法,表单 enctype 属性设置为 multipart/form-data. index.htm 文件代码修改如下: <html ...
- asp.net5 操作Cookie
写入Cookie var CookieOption = new CookieOptions(); CookieOption.Path = "/"; //on localhost, ...
- 安装fcitx [Crunch bang] [debian]
第一步: sudo apt-get install fcitx fcitx-sunpinyin fcitx-ui-classic fcitx-table fcitx-config-common fc ...
- Node.js中的Session,不要觉得简单哦。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...
- JS的window.onload与JQuery的$(document).ready(function(){})的区别
前段时间去面试被问及JS的加载(onload)与jQuery中加载(ready)方法的区别,瞬时懵逼了,关于这个知识点平时还真没怎么注意. 最近先来无事便查了一下资料, onload 事件(W3c上给 ...
- Java Web开发框架
http://blog.csdn.net/csolo/article/details/51965096
- FilterControl 显示时间并精确到时分秒的方法