HTML5的FileAPI实现文件的读取及超大文件的上传

HTML5的FileAPI实现文件的读取及超大文件的上传

2015-02-04

一、FileAPI实现本地文件的信息读取


<html>

????<head>

????<title>FormData</title>?

????<script?type="text/javascript">

//选择文件时调用

function?selectfile(){

????//控制台显示??得到文件列表对象??文件数组

????//console.log(document.getElementsByTagName(‘input‘)[5].files);

????//得到文件对象

????var?pic?=?document.getElementsByTagName(‘input‘)[0].files[0];

????//console.log(pic);

????var?debug?=?document.getElementById(‘debug‘);

????var?cont?=?‘‘;

????cont?+=?‘文件名称:‘+pic.name+‘<br/>‘;

????cont?+=?‘文件大小:‘+pic.size+‘<br/>‘;

????debug.innerHTML?=?cont;

}

????</script>

????</head>

????<body>

????????<input?type="file"?name="pic"?onchange="selectfile();">

????????<div?id="debug?"><div>

????</body>

</html>

?

?

二、改进FileAPI实现本地文件上传

php中代码:


<?php

print_r($_FILES);

if($_FILES[‘pic‘][‘error‘] != 0)????????//上传失败

????exit(‘fail‘);

//将上传的文件移动到本地目录中

move_uploaded_file($_FILES[‘pic‘][‘tmp_name‘],"./".$_FILES[‘pic‘][‘name‘]);

echo "ok";

?>

?

html文件:


<html>

????<head>

????<title>FormData</title>?

????<script?type="text/javascript">

//选择文件时调用

function?selectfile(){

????//建立一个formdata对象

????var?fd?=?new?FormData();

????//得到文件对象

????var?pic?=?document.getElementsByTagName(‘input‘)[0].files[0];

????//将文件内容追加到表单数据中

????//fd.append(pic.name,pic);

????fd.append("pic",pic);

????
?

????//创建html?http对象,发送

????var?xhr?=?new?XMLHttpRequest();

????xhr.open(‘POST‘,‘HTML5up.php‘,true);????//post发送

????xhr.onreadystatechange?=?function(){

????????if(this.readyState?==?4){

????????????document.getElementById(‘debug‘).innerHTML?=?this.responseText;

????????}

????}

????xhr.send(fd);

}

????</script>

????</head>

????<body>

????????<input?type="file"?name="pic"?onchange="selectfile();">

????????<div?id="debug"><div>

????</body>

</html>

?

?

?

可以现本地目录中 多了一个上传的文件。

?

?

三、改进FileAPI实现本地上传图片时,在浏览器进行图片预览

在以上的代码中添加代码:

选中文件后,会自动在body下面创建一个img标签

//建立一个img对象

????var tmpimg = document.createElement(‘img‘);

????????//把二进制对象直接读成浏览器显示的资源

????tmpimg.src = window.URL.createObjectURL(pic);

????????//动态创建img显示的标签

????document.getElementsByTagName(‘body‘)[0].appendChild(tmpimg);

?

如果图片过大,要显示小图,可以定义style:

<style type="text/css">

????img{ width:500px; }

</style>

?

可以发现,如果上次的图片过大,控制了图片的大小

?

?

全部html代码如下:


?<html>

????<head>

????<title>FormData</title>?

????<script?type="text/javascript">

//选择文件时调用

function?selectfile(){

????//建立一个formdata对象

????var?fd?=?new?FormData();

????//得到文件对象

????var?pic?=?document.getElementsByTagName(‘input‘)[0].files[0];

????//将文件内容追加到表单数据中

????//fd.append(pic.name,pic);

????fd.append("pic",pic);

????
?

????//建立html?http对象,发送

????var?xhr?=?new?XMLHttpRequest();

????xhr.open(‘POST‘,‘HTML5up.php‘,true);????//post发送

????xhr.onreadystatechange?=?function(){

????????if(this.readyState?==?4){

????????????document.getElementById(‘debug‘).innerHTML?=?this.responseText;

????????}

????}

????//建立一个img对象

????var?tmpimg?=?document.createElement(‘img‘);

????????//把二进制对象直接读成浏览器显示的资源

????tmpimg.src?=?window.URL.createObjectURL(pic);

????//动态创建img显示的标签

????document.getElementsByTagName(‘body‘)[0].appendChild(tmpimg);

????xhr.send(fd);

}

????</script>

<style?type=‘text/css‘>

????img{?width:500px;?}

</style>

????</head>

????<body>

????????<input?type="file"?name="pic"?onchange="selectfile();">

????????<div?id="debug"><div>

????</body>

</html>

?

?

?

?

?

?

?

时间: 2024-08-02 00:31:35

HTML5的FileAPI实现文件的读取及超大文件的上传的相关文章

PHP 学习笔记(三):高级教程:多维数组,日期,文件打开/读取,创建/写入,上传

PHP 多维数组 PHP - 两维数组 两维数组是数组的数组(三维数组是数组的数组的数组). 首先,让我们看看下面的表格: 我们能够在两维数组中存储上表中的数据,就像这样: $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); 现在这个两维数组包含了四个数组,并且它有两个

读取保存文件、图片在数据库中的上传读取

一.输入输出流 1.概念: 输入输出流主要用于保存.读取文件,其内容保存在内存中. 2.使用方法: using System.IO; //System.IO 命名空间包含允许读写文件和数据流的类型以及提供基本文件和目录支持的类型. 3.代码段实现读取和保存功能: 读取文字: OpenFileDialog op = new OpenFileDialog(); op.ShowDialog();//打开文件对话框 //将选择的东西读取到文档里 StreamReader sd = new StreamR

使用生成器读取一个超大文件

pyhon读取文件很方便,但是,如果文件很大,而且还是一行文件,那就蛋疼了. 不过还好有read(size)方法,这个方法就是每次读取size大小的数据到内存中 下面来个示例 def readlines(f, separator): ''' 读取大文件方法 :param f: 文件句柄 :param separator: 每一行的分隔符 :return: ''' buf = '' while True: while separator in buf: position = buf.index(s

HTML5 file API加canvas实现图片前端JS压缩并上传 (转载)

一.图片上传前端压缩的现实意义 对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验. 这种体验包括两方面: 由于上传图片尺寸比较小,因此上传速度会比较快,交互会更加流畅,同时大大降低了网络异常导致上传失败风险. 最最重要的体验改进点:省略了图片的再加工成本.很多网站的图片上传功能都会对图片的大小进行限制,尤其是头像上传,限制5M或者2M以内是非常常见的.然后现在的数码设备拍摄功能都非常出众,一张原始图片超过2M几乎是标配,此时如果用户想把手机或相机中的某个得意图片

ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path);与DirectoryInfo directory = new DirectoryInfo (Path);) 1获取文件信息 在知道文件相对路径的情形,下面代码可以获取文件的详细信息 1 public static void fileinfo(string Path) 2 { 3 Path = S

HTML 文件类表单元素如何限制上传类型,Accept属性设置

需求描述:简单的控制file的选择类型 解决方法:使用HTML  input file 的accept属性控制 实例: <form action="demo_form.asp"> <input type="file" name="pic" accept="image/gif,image/jpg" /> <input type="submit" /> </form&g

用Canvas+Javascript FileAPI 实现一个图片剪切、滤镜处理、上传下载工具

直接上代码,其中上传功能需要自己配置允许跨域的文件服务器地址~ 或者将html文件贴到您的站点下同源上传也OK. 支持: 不同尺寸图片获取. 原图缩小放大. 原图移动. 选择框大小改变. 下载选中的区域. 上传选中的区域. 几种简单的滤镜(自己添加滤镜函数即可添加滤镜效果) <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dt

Spring MVC环境中文件上传大小和文件类型限制以及超大文件上传bug问题

    在上一篇文章中,主要介绍了Spirng MVC环境下的正常情况下文件上传功能实现.在实际开发的时候,还会涉及到上传文件大小和类型的限制,接下来就会对Spirng MVC环境下文件上传大小和类型的限制进行介绍,还会讲解到文件上传大小tomcat服务器bug问题及解决方案. 一.文件上传大小限制 这里还是接着上篇文章先介绍Spring MVC下的文件上传大小限制,文件上传大小的限制在springmvc-config.xml中配置文件解析器CommonsMultipartResolver时即可

使用HTML5实现扫描PC二维码且触发WAP端上传资源功能

讲解一篇Java代码根据参数动态生成PC二维码效果,且成功扫描并上传图形或视频资源的功能. 技术难度一般,关键在于如何把一整套逻辑思路整合到项目上,如果调用,应该到哪些技术,理清了交互关系,详细对于大家而言这就是一份入门级别的代码参考,以作提升. 粗略介绍一下应用到的技术问题,前端方法使用简单的html元素布局,生成<img>二维码即可,后端框架为SpringMVC,结构简单,查阅清晰,应用到的二维码Jar包为:qrcode_swetake.jar . 一.从前端开始入手,先构建页面布局确保能