使用HTML5实现多文件上传
作者:优天网络 日期:2015-03-08 阅读量:662 次 分享到:

在Dojo1.6中有一个崭新的Multi-File Uploader  (dojox.form.Uploader),它具有一个可定制样式的file input按钮,可使用多文件选择模式,且完全基于HTML元素。在不支持HTML5的浏览器中,该控件可以自动切换到使用Flash或者iframe。

原文:The New HTML5 Multi-File Uploader

作者:Mike Wilcox

难度: 初学者

Dojo版本: 1.6

入门

File input之所以叫file input是因为它是一个标准的input元素,且其type属性被设置为"file"。很多年以来,file input一次只能选择并上传单个文件。在新的HTML5规范中为input元素添加了多选模式。当然,不同浏览器对于规范的实现一直以来都不尽相同。比如,Firefox3.6和WebKit以及Firefox4.0就不同。或许你已经猜到了,IE并没有实现HTML5中多文件上传这一功能...甚至IE9也没有实现。

!dojox.form.Uploader相 对于dojox.form.FileUploader做出了很多改进,并将取代后者。由于新的dojox.form.Uploader在Mozilla和 Webkit浏览器下并不适用Flash,因此许多由于使用Flash而引起的问题得到了规避。Dojo 1.6之后不再会继续对于dojox.form.FileUploader提供维护,但是该控件代码会一直保留到Dojo 2.0之前。

为了应付Dojo开发者需要面对的各种情况, 真正的“上传功能”其实是由插件实现的。离开了这些插件,Uploader的代码允许对file input进行样式定制,并在不支持HTML5的浏览器中通过为每一个文件的选择添加一个新的file input元素来实现多文件的选择。这所有的一切只需要为一个普通的file input添加dojoType属性:

[html]
  1. <input type="file" multiple="true" dojoType="dojox.form.Uploader"  
  2. label="Select Some Files" url="/tests/UploadFile.php"  
  3. uploadOnSelect="true"/>  

上述代码将会生成一个使用你所选择的Dijit样式的上传文件按钮。这里我们默认使用Claro主题:

注意,若是要使用Ajax来上传文件的话,你还需要一个Uploader插件,之后我会说明这一点。

除了使用Ajax上传文件,这个Uploader也可能被放在一个form表单中直接上传文件。使用时记得将你的form表单的enctype属性设置为multipart/form-data,该属性是用来上传文件的。

[html]
  1. <form method="post" action="/tests/UploadFile.php" id="myForm"  
  2. enctype="multipart/form-data" >  
  3.     <fieldset>  
  4.         <legend> 相关标签: HTML5 多文件上传
免责声明:本文章部分图片素材和内容素材来源于网络,仅供学习与参考,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。