html5 上传文件功能的代码实现

合集下载

HTML5文件上传下载的实例代码

HTML5文件上传下载的实例代码

HTML5⽂件上传下载的实例代码前⾔HTML5 中提供的⽂件API在前端中有着丰富的应⽤,上传、下载、读取内容等在⽇常的交互中很常见。

⽽且在各个浏览器的兼容也⽐较好,包括移动端,除了 IE 只⽀持 IE10 以上的版本。

想要更好地掌握好操作⽂件的功能,先要熟悉每个API。

FileList 对象和 file 对象HTML 中的 input[type="file"] 标签有个 multiple 属性,允许⽤户选择多个⽂件,FileList对象则就是表⽰⽤户选择的⽂件列表。

这个列表中的每⼀个⽂件,就是⼀个 file 对象。

1. file 对象的属性:2. name : ⽂件名,不包含路径。

3. type : ⽂件类型。

图⽚类型的⽂件都会以 image/ 开头,可以由此来限制只允许上传图⽚。

4. size : ⽂件⼤⼩。

可以根据⽂件⼤⼩来进⾏其他操作。

5. lastModified : ⽂件最后修改的时间。

<input type="file" id="files" multiple><script>var elem = document.getElementById('files');elem.onchange = function (event) {var files = event.target.files;for (var i = 0; i < files.length; i++) {// ⽂件类型为 image 并且⽂件⼤⼩⼩于 200kbif(files[i].type.indexOf('image/') !== -1 && files[i].size < 204800){console.log(files[i].name);}}}</script>input 中有个 accept 属性,可以⽤来规定能够通过⽂件上传进⾏提交的⽂件类型。

HTML5文件上传相关技术及示例

HTML5文件上传相关技术及示例
iOS 在浏览器中限制访问本地文件,并且不支持 Flash,所以没有一个比较好的办法在 浏览器中进行文件的上传。幸运的是 iOS 6 中放开了上传限制。通过指定 HTML5<input> 标签的 type 属性为“file”建立一个文件上传入口,可以访问相册和相机。 (2)应用 HTML5 实现文件上传可以达到的主要效果
1.2 HTML5 dataTransfer 对象 ............................................................................................ 12 1.2.1 DataTransfer 对象中的典型属性...................................................................... 12 1.2.2 HTML5 基于拖拽(Drag&Drop)的事件机制 .............................................. 14 1.2.3 代码示例............................................................................................................ 14
1.1.2 HTML5 的进度事件 1、HTML5 当中新增了一个进度事件(Progress Events)
这个事件为我们提供了以下属性信息: (1)total – 整型值,用于指定传输数据的总字节数(文件大小) (2)loaded –整型值,用于指定上传的字节(已上传的大小) (3)lengthComputable –布尔类型值,用于检测上传文件大小是否可计算(进度是否可计 算) 1.1.3 HTML5 文件上传的<input>标签 1、增加了 onchange 事件

移动端HTML5实现文件上传

移动端HTML5实现文件上传

PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现。

用的技术主要是:ajaxFileReaderFormDataHTML结构:XML/HTML Code1.&lt;div class="camera-area"&gt; &nbsp;&nbsp;2. &nbsp; &nbsp; &nbsp;&lt;form enctype="multipart/form-data" method="post"&gt; &nbsp;&nbsp;3. &nbsp; &nbsp; &nbsp; &nbsp;&lt;input type="file" name="fileToUpload" class="fileToUpload" accept="image/*" capture="camera"/&gt; &nbsp;&nbsp;4. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;div class="upload-progress"&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt; &nbsp;&nbsp;5. &nbsp; &nbsp; &nbsp; &nbsp;&lt;/form&gt; &nbsp;&nbsp;6. &nbsp; &nbsp; &nbsp;&lt;div class="thumb"&gt;&lt;/div&gt; &nbsp;&nbsp;7. &nbsp;&lt;/div&gt; &nbsp;&nbsp;8. &nbsp;&nbsp;已经封装好的upload.js,依赖zeptoJavaScript Code1.(function($) { &nbsp; &nbsp;2. &nbsp;$.extend($.fn, { &nbsp; &nbsp;3. &nbsp; &nbsp;fileUpload: function(opts) { &nbsp; &nbsp;4. &nbsp; &nbsp; &nbsp;this.each(function() { &nbsp; &nbsp;5. &nbsp; &nbsp; &nbsp; &nbsp;var $self = $(this); &nbsp; &nbsp;6. &nbsp; &nbsp; &nbsp; &nbsp;var doms = { &nbsp; &nbsp;7. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"fileToUpload": $self.find(".fileToUpload"), &nbsp; &nbsp;8. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"thumb": $self.find(".thumb"), &nbsp; &nbsp;9. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"progress": $self.find(".upload-progress") &nbsp; &nbsp;10. &nbsp; &nbsp; &nbsp; &nbsp;}; &nbsp; &nbsp;11. &nbsp; &nbsp; &nbsp; &nbsp;var funs = { &nbsp; &nbsp;12. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//选择文件,获取文件大小,也可以在这里获取文件格式,限制用户上传非要求格式的文件&nbsp; &nbsp;13. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"fileSelected": function() { &nbsp; &nbsp;14. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var files = (doms.fileToUpload)[0].files; &nbsp; &nbsp;15. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var count = files.length; &nbsp; &nbsp;16. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (var index = 0; index &lt; count;index++) { &nbsp; &nbsp;17. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var file = files[index]; &nbsp; &nbsp;18. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var fileSize = 0; &nbsp; &nbsp;19. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (file.size &gt; 1024 * 1024) &nbsp; &nbsp;20. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB'; &nbsp; &nbsp;21. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else &nbsp;&nbsp;22. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB'; &nbsp; &nbsp;23. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; &nbsp;24. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;funs.uploadFile(); &nbsp; &nbsp;25. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}, &nbsp; &nbsp;26. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//异步上传文件&nbsp; &nbsp;27. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uploadFile: function() { &nbsp; &nbsp;28. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var fd = new FormData();//创建表单数据对象&nbsp; &nbsp;29. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var files = (doms.fileToUpload)[0].files; &nbsp; &nbsp;30. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var count = files.length; &nbsp; &nbsp;31. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for (var index = 0; index &lt; count; index++) { &nbsp; &nbsp;32. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var file = files[index]; &nbsp; &nbsp;33. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fd.append(opts.file, file);//将文件添加到表单数据中&nbsp; &nbsp;34. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;funs.previewImage(file);//上传前预览图片,也可以通过其他方法预览txt &nbsp; &nbsp;35. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; &nbsp;36. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var xhr = new XMLHttpRequest(); &nbsp; &nbsp;37. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xhr.upload.addEventListener("progress", funs.uploadProgress, false);//监听上传进度&nbsp; &nbsp;38. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xhr.addEventListener("load", funs.uploadComplete, false); &nbsp; &nbsp;39. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xhr.addEventListener("error", opts.uploadFailed, false); &nbsp; &nbsp;40. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xhr.open("POST", opts.url); &nbsp; &nbsp;41. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xhr.send(fd); &nbsp; &nbsp;42. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}, &nbsp; &nbsp;43. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//文件预览&nbsp; &nbsp;44. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;previewImage: function(file) { &nbsp; &nbsp;45. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var gallery = doms.thumb; &nbsp; &nbsp;46. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var img = document.createElement("img"); &nbsp; &nbsp;47. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;img.file = file; &nbsp; &nbsp;48. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doms.thumb.html(img); &nbsp; &nbsp;49. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 使用FileReader方法显示图片内容&nbsp; &nbsp;50. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var reader = new FileReader(); &nbsp; &nbsp;51. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reader.onload = (function(aImg) { &nbsp; &nbsp;52. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return function(e) { &nbsp; &nbsp;53. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;aImg.src = e.target.result; &nbsp; &nbsp;54. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}; &nbsp; &nbsp;55. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;})(img); &nbsp; &nbsp;56. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reader.readAsDataURL(file); &nbsp; &nbsp;57. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}, &nbsp; &nbsp;58. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;uploadProgress: function(evt) { &nbsp; &nbsp;59. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (evt.lengthComputable) { &nbsp; &nbsp;60. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var percentComplete = Math.round(evt.loaded * 100 / evt.total); &nbsp; &nbsp;61. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doms.progress.html(percentComplete.toString() + '%'); &nbsp; &nbsp;62. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; &nbsp;63. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}, &nbsp; &nbsp;64. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"uploadComplete": function(evt) { &nbsp; &nbsp;65. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;alert(evt.target.responseText) &nbsp; &nbsp;66. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; &nbsp;67. &nbsp; &nbsp; &nbsp; &nbsp;}; &nbsp; &nbsp;68. &nbsp; &nbsp; &nbsp; &nbsp;doms.fileToUpload.on("change", function() { &nbsp; &nbsp;69. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;doms.progress.find("span").width("0"); &nbsp; &nbsp;70. &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;funs.fileSelected(); &nbsp; &nbsp;71. &nbsp; &nbsp; &nbsp; &nbsp;}); &nbsp; &nbsp;72. &nbsp; &nbsp; &nbsp;}); &nbsp; &nbsp;73. &nbsp; &nbsp;} &nbsp; &nbsp;74. &nbsp;}); &nbsp; &nbsp;75.})(Zepto); &nbsp;&nbsp;调用方法:JavaScript Code1.$(".camera-area").fileUpload({ &nbsp; &nbsp;2. &nbsp; &nbsp; &nbsp; &nbsp;"url": "savetofile.php", &nbsp; &nbsp;3. &nbsp; &nbsp; &nbsp; &nbsp;"file": "myFile" &nbsp;&nbsp;4. &nbsp; &nbsp; &nbsp;}); &nbsp; &nbsp;PHP部分:PHP Code1.&lt;?php &nbsp; &nbsp;2.if (isset($_FILES['myFile'])) { &nbsp; &nbsp;3. &nbsp; &nbsp;// Example: &nbsp; &nbsp;4. &nbsp; &nbsp;writeLog($_FILES); &nbsp; &nbsp;5. &nbsp; &nbsp;move_uploaded_file($_FILES['myFile']['tmp_name'], "uploads/" . $_FILES['myFile']['name']); &nbsp; &nbsp;6. &nbsp; &nbsp;echo 'successful'; &nbsp; &nbsp;7.} &nbsp; &nbsp;8.function writeLog($log){ &nbsp; &nbsp;9. &nbsp; &nbsp;if(is_array($log) || is_object($log)){ &nbsp; &nbsp;10. &nbsp; &nbsp; &nbsp; &nbsp;$log = json_encode($log); &nbsp; &nbsp;11. &nbsp; &nbsp;} &nbsp; &nbsp;12. &nbsp; &nbsp;$log = $log."\r\n"; &nbsp; &nbsp;13. &nbsp;&nbsp;14. &nbsp; &nbsp;file_put_contents('log.log', $log,FILE_APPEND); &nbsp; &nbsp;15.} &nbsp; &nbsp;16.?&gt; &nbsp; &nbsp;以上就是本文的全部内容,希望对大家的学习有所帮助。

HTML5应用之文件拖拽上传

HTML5应用之文件拖拽上传

HTML5应用之文件拖拽上传使用HTML5的文件API,可以将操作系统中的文件拖放到浏览器的指定区域,实现文件上传到服务器。

本文将结合实例讲解HTML5+jQuery+PHP实现拖拽上传图片的过程,来看下HTML5的魅力吧。

HTML我们在页面中放置一个拖拽区域#drop_area,即接收拖拽的区域,#preview用来预览拖拽上传的图片信息。

<div id="drop_area">将图片拖拽到此区域</div><div id="preview"></div>Javascript要想实现拖拽,页面需要阻止浏览器默认行为,即四个事件(拖离、拖后放、拖进、拖来拖去),因为我们要阻止浏览器默认将图片打开的行为,这里我们使用jQuery来完成。

$(function(){//阻止浏览器默认行。

$(document).on({dragleave:function(e){ //拖离e.preventDefault();},drop:function(e){ //拖后放e.preventDefault();},dragenter:function(e){ //拖进e.preventDefault();},dragover:function(e){ //拖来拖去e.preventDefault();}});...});接下来我们来了解下文件API。

HTML5的文件API有一个FileList接口,它可以通过e.dataT ransfer.files拖拽事件传递的文件信息,获取本地文件列表信息。

var fileList = e.dataTransfer.files;使用files 方法将会获取到拖拽文件的数组形势的数据,每个文件占用一个数组的索引,如果该索引不存在文件数据,将返回null 值。

可以通过length属性获取文件数量.var fileNum = fileList.length;在本例中,我们用javascript来侦听drop事件,首先要判断拖入的文件是否符合要求,包括图片类型、大小等,然后获取本地图片信息,实现预览,最后上传。

基于HTML5+js+Java实现单文件文件上传到服务器功能

基于HTML5+js+Java实现单文件文件上传到服务器功能

基于HTML5+js+Java实现单⽂件⽂件上传到服务器功能上传单⽂件到服务器应公司要求,在HTML5页⾯上实现上传⽂件到服务器,对于⼀个还没毕业的实习⽣菜鸟来说,这可不得了-----不会,⽹上各种百度,找各种博客还是没解决,最后还是请教了公司的⼤神,⼈家给卸了⼀个例⼦,然后根据⼈家写的终于把这个上传⽂件搞定。

好了,开始上代码。

HTML5代码:<form name="upform" action="" method="POST"><input type ="file" name="myfile1" id="myfile1"/><br/><input type ="file" name="myfile2" id="myfile2"/><br/>备注:<input type="text" name="mydata" id="mydata"/><br/><input type="button" value="确定" onclick="upload()"/><br/></form>js代码:FormData可以把它理解成⼀个虚拟的表单对象,它只有⼀个⽅法append,我们可以通过append向FormData⾥⾯添加各种需要提交的数据。

url:/adata/adata/payment/PaymentAction/upload.menu----指的是你Java接受信息的action路径_pathName=/adata//payment.jsp-----------指的是你HTML5页⾯的虚拟路径。

HTML5实现文件上传下载功能实例解析

HTML5实现文件上传下载功能实例解析

HTML5实现⽂件上传下载功能实例解析前⾔:因⾃⼰负责的项⽬(jetty内嵌启动的SpringMvc)中需要实现⽂件上传,⽽⾃⼰对java⽂件上传这⼀块未接触过,且对 Http 协议较模糊,故这次采⽤渐进的⽅式来学习⽂件上传的原理与实践。

该博客重在实践。

⼀. Http协议原理简介HTTP是⼀个属于应⽤层的⾯向对象的协议,由于其简捷、快速的⽅式,适⽤于分布式超媒体信息系统。

它于1990年提出,经过⼏年的使⽤与发展,得到不断地完善和扩展。

⽬前在WWW中使⽤的是HTTP/1.0的第六版,HTTP/1.1的规范化⼯作正在进⾏之中,⽽且HTTP-NG(Next Generation of HTTP)的建议已经提出。

简单来说,就是⼀个基于应⽤层的通信规范:双⽅要进⾏通信,⼤家都要遵守⼀个规范,这个规范就是HTTP协议。

1.特点:(1)⽀持客户/服务器模式。

(2)简单快速:客户向服务器请求服务时,只需传送请求⽅法和路径。

请求⽅法常⽤的有GET、HEAD、POST。

每种⽅法规定了客户与服务器联系的类型不同。

由于HTTP协议简单,使得HTTP服务器的程序规模⼩,因⽽通信速度很快。

(3)灵活:HTTP允许传输任意类型的数据对象。

正在传输的类型由Content-Type加以标记。

(4)⽆连接:⽆连接的含义是限制每次连接只处理⼀个请求。

服务器处理完客户的请求,并收到客户的应答后,即断开连接。

采⽤这种⽅式可以节省传输时间。

(5)⽆状态:HTTP协议是⽆状态协议。

⽆状态是指协议对于事务处理没有记忆能⼒。

缺少状态意味着如果后续处理需要前⾯的信息,则它必须重传,这样可能导致每次连接传送的数据量增⼤。

另⼀⽅⾯,在服务器不需要先前信息时它的应答就较快。

注意:其中(4)(5)是⾯试中常⽤的⾯试题。

虽然HTTP协议(应⽤层)是⽆连接,⽆状态的,但其所依赖的TCP协议(传输层)却是常连接、有状态的,⽽TCP协议(传输层)⼜依赖于IP协议(⽹络层)。

利用html5分片上传超大文件

利用html5分片上传超大文件

在网页中直接上传大文件一直是个比较头疼的问题,主要面临的问题一般包括两类:一是上传时间长中途一旦出错会导致前功尽弃;二是服务端配置复杂,要考虑接收超大表单和超时问题,如果是托管主机没准还改不了配置,默认只能接收小于4mb的附件。

比较理想的方案是能够把大文件分片,一片一片的传到服务端,再由服务端合并。

这么做的好处在于一旦上传失败只是损失一个分片而已,不用整个文件重传,而且每个分片的大小可以控制在4mb以内,服务端不用做任何设置就可适应。

常用的解决方案是ria,以flex为例,通常是利用filereference.load方法加载文件得到bytearray,然后分片构造表单(flash的高版本不允许直接访问文件)。

不过这个load方法只能加载较小的文件,大约不超过300mb,因此适用性不是很强。

好在现在有了html5,我们可以直接构造分片了,这是一个非常喜人的进步,只可惜目前适用面不广(ie啊ie,真是恨你恨得牙痒痒)。

言归正传,来看一个demo吧,基于 mvc3,只是示例,很多问题做了简化处理。

主要是客户端,新特性都体现在这里:&lt;%@ page language=c# inherits=system.web.mvc.viewpage&lt;dynamic&gt; %&gt;&lt;!doctype html&gt;&lt;html lang=zh-cn&gt;&lt;head&gt;&lt;meta charset=utf-8&gt;&lt;title&gt;html5大文件分片上传示例&lt;/title&gt;&lt;script src=../scripts/jquery-1.11.1.min.js&gt;&lt;/script&gt;&lt;script&gt;var page = {init: function(){$(#upload).click($.proxy(this.upload, this));},upload: function(){var file = $(#file)[0].files[0], //文件对象name = , //文件名size = file.size, //总大小succeed = 0;var shardsize = 2 * 1024 * 1024, //以2mb为一个分片shardcount = math.ceil(size / shardsize); //总片数for(var i = 0;i &lt; shardcount;++i){//计算每一片的起始与结束位置var start = i * shardsize,end = math.min(size, start + shardsize);//构造一个表单,formdata是html5新增的var form = new formdata();form.append(data, file.slice(start,end)); //slice方法用于切出文件的一部分form.append(name, name);form.append(total, shardcount); //总片数form.append(index, i + 1); //当前是第几片//ajax提交$.ajax({url: ../file/upload,type: post,data: form,async: true, //异步processdata: false, //很重要,告诉jquery不要对form进行处理contenttype: false, //很重要,指定为false才能形成正确的content-typesuccess: function(){++succeed;$(#output).text(succeed + / + shardcount);}});}}};$(function(){page.init();});&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&lt;input type=file id=file /&gt;&lt;button id=upload&gt;上传&lt;/button&gt;&lt;span id=output style=font-size:12px&gt;等待&lt;/span&gt;&lt;/body&gt;&lt;/html&gt;这里的slice方法和formdata都是html5之前不存在的。

php使用html5实现多文件上传实例

php使用html5实现多文件上传实例

php使用html5实现多文件上传实例php使用html5实现多文件上传实例在html没有出来之前,要实现php多文件上传比较麻烦,需要在form表单里面添加多个input file域。

html5发布以后,我们可以使用input file的html5属性multiple来实现多文件上传,需要的.朋友可以参考下。

首先向大家介绍一下html5中file的multiple属性定义和用法:multiple 属性规定输入字段可选择多个值。

如果使用该属性,则字段可接受多个值。

实例:<form action="demo_form.asp" method="get">Select images: <input type="file" name="img" multiple="multiple" /><input type="submit" /></form>上面实例中的input file 可接受多个文件上传字段。

了解了html5中file的multiple属性,下面我们开始讲解使用html5实现多文件上传。

实例代码:html:<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body><form action="my_parser.php" method="post" enctype="multipart/form-data"><p><input name="upload[]" type="file" multiple="multiple" /></p><input type="submit" value="Upload all files"></form></body></html>php代码:for($i=0; $i<count($_FILES['upload']['name']); $i++) {//Get the temp file path$tmpFilePath = $_FILES['upload']['tmp_name'][$i];//Make sure we have a filepathif ($tmpFilePath != ""){//Setup our new file path$newFilePath = "./uploadFiles/" . $_FILES['upload']['name'][$i];//Upload the file into the temp dirif(move_uploaded_file($tmpFilePath, $newFilePath)) {//Handle other code here}}}最后,非常感谢大家的阅读,希望能帮助到大家!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

html5 上传文件功能的代码实现
Html5代码:
<form id="form1" enctype="multipart/form-data" method="post" acti on="http://121.14.204.68:36161/eqp/upload?strOperator=chenzl">
<div class="row">
<label for="fileToUpload">选择文件</label>
<input type="file" name="fileName" id="fileName" onchange="fileSe lected();"/>
</div>
<div id="fileName"></div>
<div id="fileSize"></div>
<div id="fileType"></div>
<div class="row">
上传者:<input type="text" name="name" id="name"/>
<input type="button" onclick="uploadFile()" value="上传" />
<input type="button" onclick="cancleUploadFile()" value="取消" /> </div>
<div id="progressNumber"></div>
</form>
Javascrpit代码:
<script type="text/javascript">
ar xhr = new XMLHttpRequest();
//监听选择文件信息
function fileSelected() {
//HTML5文件API操作
var file = document.getElementById('fileName').files[0];
if(file) {
var fileSize = 0;
if(file.size > 1024 * 1024)
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
else
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
document.getElementById('fileName').innerHTML = 'Name: '+ ;
document.getElementById('fileSize').innerHTML = 'Size: '+ fileSize;
document.getElementById('fileType').innerHTML = 'Type: '+ file.type;
}
}
//上传文件
function uploadFile() {
var fd = new FormData();
//关联表单数据,可以是自定义参数
fd.append("name", document.getElementById('name').value);
fd.append("fileName",
document.getElementById('fileName').files[0]);
//监听事件
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
//发送文件和表单自定义参数
xhr.open("POST",
"http://121.14.204.68:36161/eqp/upload?strOperator=chenzl");
xhr.send(fd);
}
//取消上传
function cancleUploadFile() {
xhr.abort();
}
//上传进度
function uploadProgress(evt) {
if(evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 /
evt.total);
document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
} else {
document.getElementById('progressNumber').innerHTML =
'unable to compute';
}
}
//上传成功响应
function uploadComplete(evt) {
//服务断接收完文件返回的结果
alert(evt.target.responseText);
}
//上传失败
function uploadFailed(evt) {
alert("上传失败");
}
//取消上传
function uploadCanceled(evt) {
alert("您取消了本次上传.");
}
</script>。

相关文档
最新文档