这段时间做了一个项目用到uploadifive上传控件,和uploadify不同,这个控件是基于HTML5的版本而不用支持falsh,因而移动端也可以使用。
整理用过的相关属性与方法:
属性 | 作用 |
auto | 是否自动上传,默认true |
uploadScript | 上传路径 |
fileObjName | file文件对象名称 |
buttonText | 上传按钮显示文本 |
queueID | 进度条的显示位置 |
fileType | 上传文件类型 |
multi | 是否允许多个文件上传,默认为true |
fileSizeLimit | 允许文件上传的最大尺寸 |
uploadLimit | 一次可以上传的最大文件数 |
queueSizeLimit | 允许队列中存在的最大文件数 |
removeCompleted | 隐藏完成上传的文件,默认为false |
方法 | 作用 |
onUploadComplete | 文件上传成功后执行 |
onCancel | 文件被删除时触发 |
onUpload | 开始上传队列时触发 |
onFallback | HTML5 API不支持的浏览器触发 |
例子如下:
1.首先页面需要引进js和css文件
2.uploadifive控件的具体应用
$(function() { $('#signup-idimage1').uploadifive({ 'auto' : true, 'uploadScript' : 'uploadPhoto', 'fileObjName' : 'upload', 'buttonText' : '上传照片', 'queueID' : 'tip-queue1', 'fileType' : 'image/*', 'multi' : false, 'fileSizeLimit' : 5242880, 'uploadLimit' : 1, 'queueSizeLimit' : 1, 'onUploadComplete' : function(file, data) { var obj = JSON.parse(data); if (obj.img == "500") { alert("系统异常!"); } else { $("#frontSide").val(obj.img); document.getElementById("submit").disabled = false; } }, onCancel : function(file) { $("#frontSide").val(""); /* 注意:取消后应重新设置uploadLimit */ $data = $(this).data('uploadifive'), settings = $data.settings; settings.uploadLimit++; alert(file.name + " 已取消上传~!"); }, onFallback : function() { alert("该浏览器无法使用!"); }, onUpload : function(file) { document.getElementById("submit").disabled = true;//当开始上传文件,要防止上传未完成而表单被提交 }, }); });
3.简化后的页面
<!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>注册</title> <link rel="stylesheet" type="text/css" href="../uploadiFive/uploadifive.css" /> <script src="../js/jquery-1.7.2.js"></script> <script src="js/mobileupload.js"></script> <script src="../uploadiFive/jquery.uploadifive.js"></script> </head> <body> <form class="cd-form" id="subForm" action="openaccount" method="post"> <div id="cd-signup"> <p class="fieldset"> <label class="image-replace cd-photo1" for="signup-idimage1"></label> <input class="full-width has-padding has-border" id="signup-idimage1" type="file" name="upload"> <input type="hidden" name="frontSide" id="frontSide"> <div id="tip-queue1"></div> </p> </p> <p class="fieldset"> <input class="full-width2" id="submit" type="submit" value="提交"> </p> </form> </body> </html>
(IE9及以下不支持下面这些功能,其它浏览器最新版本均已支持。)
1、允许上传文件数量
只允许上传一个文件:<input type="file" single>
2、上传指定的文件格式
<input type="file" accept="image/gif,image/png" />
这里的上传格式仅指打开上传弹窗选择文件时默认的文件格式,可手动修改成其它文件格式。
如果不限制上传图片的格式可写成:accept="image/*"
其它格式参考如下:
*.3gpp | audio/3gpp, video/3gpp | 3GPP Audio/Video |
*.ac3 | audio/ac3 | AC3 Audio |
*.asf | allpication/vnd.ms-asf | Advanced Streaming Format |
*.au | audio/basic | AU Audio |
*.css | text/css | Cascading Style Sheets |
*.csv | text/csv | Comma Separated Values |
*.doc | application/msword | MS Word Document |
*.dot | application/msword | MS Word Template |
*.dtd | application/xml-dtd | Document Type Definition |
*.dwg | image/vnd.dwg | AutoCAD Drawing Database |
*.dxf | image/vnd.dxf | AutoCAD Drawing Interchange Format |
*.gif | image/gif | Graphic Interchange Format |
*.htm | text/html | HyperText Markup Language |
*.html | text/html | HyperText Markup Language |
*.jp2 | image/jp2 | JPEG-2000 |
*.jpe | image/jpeg | JPEG |
*.jpeg | image/jpeg | JPEG |
*.jpg | image/jpeg | JPEG |
*.js | text/javascript, application/javascript | JavaScript |
*.json | application/json | JavaScript Object Notation |
*.mp2 | audio/mpeg, video/mpeg | MPEG Audio/Video Stream, Layer II |
*.mp3 | audio/mpeg | MPEG Audio Stream, Layer III |
*.mp4 | audio/mp4, video/mp4 | MPEG-4 Audio/Video |
*.mpeg | video/mpeg | MPEG Video Stream, Layer II |
*.mpg | video/mpeg | MPEG Video Stream, Layer II |
*.mpp | application/vnd.ms-project | MS Project Project |
*.ogg | application/ogg, audio/ogg | Ogg Vorbis |
application/pdf | Portable Document Format | |
*.png | image/png | Portable Network Graphics |
*.pot | application/vnd.ms-powerpoint | MS PowerPoint Template |
*.pps | application/vnd.ms-powerpoint | MS PowerPoint Slideshow |
*.ppt | application/vnd.ms-powerpoint | MS PowerPoint Presentation |
*.rtf | application/rtf, text/rtf | Rich Text Format |
*.svf | image/vnd.svf | Simple Vector Format |
*.tif | image/tiff | Tagged Image Format File |
*.tiff | image/tiff | Tagged Image Format File |
*.txt | text/plain | Plain Text |
*.wdb | application/vnd.ms-works | MS Works Database |
*.wps | application/vnd.ms-works | Works Text Document |
*.xhtml | application/xhtml+xml | Extensible HyperText Markup Language |
*.xlc | application/vnd.ms-excel | MS Excel Chart |
*.xlm | application/vnd.ms-excel | MS Excel Macro |
*.xls | application/vnd.ms-excel | MS Excel Spreadsheet |
*.xlt | application/vnd.ms-excel | MS Excel Template |
*.xlw | application/vnd.ms-excel | MS Excel Workspace |
*.xml | text/xml, application/xml | Extensible Markup Language |
*.zip | aplication/zip | Compressed Archive |
这里要慎重说明的是:网上好多教程都说 excel过滤要用“accept="application/msexcel"” ,其实是大错特错!测试了,不行! 我也是在做phpExcel导出excel文件是,看到了,有一行代码:
header(‘Content-Type: application/vnd.ms-excel‘); //excel 2003
header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘); //excel 2007
我才明白,原来 .xls 格式的文件,要用这个 MIME 类型。 测试,成功!