最近在处理后台数据时需要实现文件上传.考虑到对浏览器适配上采用Fine Uploader. Fine Uploader 采用ajax方式实现对文件上传.同时在浏览器中直接支持文件拖拽[对浏览器版本有要求类似IE版本必须是9或是更高的IE10].在不同浏览器中提供统一用户体验.该组件基本覆盖目前所有主流浏览器.同时没有任何第三方组件依赖.相当Clear.在服务器端已经覆盖支持了ASP.NET/ColdFusion/Java/Node.js/Perl/PHP/Python. 对上传细节类似限制文件大小,文件类型,文件上传的数量等通过统一接口以暴露选项方式操作. 
脚本之家下载地址 https://www.jb51.net/codes/70040.html
看到Github 上Fine Uploader 按照官方的说法. Fine Uploader前身是Ajax Upload. 新版本Fine Uploader主要添加一些新特性.从1.0版本发布的Realse Note来看.二者最大的区别在于.Fine Uploder不在基于Jquery组件.而某些细节处理也更加统一严格.类似返回值全部统一为Json格式.对后台服务器操作和前端Dom对象一些操作Code全部集中Js Script脚本文件中.这样集成使Fine Uploader组件使用非常简单.只需要添加一个CSS+JavaScript文件即可实现文件上传.大大简化用户引用和操作组件难度. 
Fine Uploader特点如下: 
Fine Uploader Features: 
A:支持文件上传进度显示. 
B:文件拖拽浏览器上传方式 
C:Ajax页面无刷新. 
D:多文件上传. 
F:跨浏览器. 
E:跨后台服务器端语言. 
在Git Hub上Fine Uploader上下载打包源码,在Php Designer 8中打开其源码可以看到其源码结构如下: 

如何快速构建一个简单Demo? 其实官方在Basic-Demo-Page上已经给出一个简单的演示.这里基于Bootstrap方式构建.
首先新建一个Html空白页面.命名FineUploderDemo.html.添加如下CSS引用如下:
复制代码 代码如下:
 
<link href="https://www.jb51.net/static/css/fineuploader.css"> 
<link href="https://www.jb51.net/static/css/bootstrap.min.css"> 
这两个文件时必须引用的.fineuploader.css则是对应下载Fine Uploder源码Client目录下.fineuploder.css 提供JS脚本中所需的CSS样式,主要包括按钮的样式、进度显示的样式以及上传结果的样式.添加JavaScript文件引用如下:
复制代码 代码如下:
 
<script src="https://www.jb51.net/static/script/fineupload/header.js"></script> 
<script src="https://www.jb51.net/static/script/fineupload/util.js"></script> 
<script src="https://www.jb51.net/static/script/fineupload/button.js"></script> 
<script src="https://www.jb51.net/static/script/fineupload/handler.base.js"></script> 
<script src="https://www.jb51.net/static/script/fineupload/handler.form.js"></script> 
<script src="https://www.jb51.net/static/script/fineupload/handler.xhr.js"></script> 
<script src="https://www.jb51.net/static/script/fineupload/uploader.basic.js"></script> 
<script src="https://www.jb51.net/static/script/fineupload/dnd.js"></script> 
<script src="https://www.jb51.net/static/script/fineupload/uploader.js"></script> 
其中uploder.js和uploder.basic.js则是前端的所有上传功能都在该脚本中实现.必须引用.
同时添加client目录下processing和loading两张进度显示所需要的动态图片.该图片都在fineuploder.css文件调用.
在body添加如下Code:
复制代码 代码如下:
 
<div></div> 
<script> 
function createUploader() { 
var uploader = new qq.FineUploader({ 
element: document.getElementById('bootstrapped-fine-uploader'), 
request: { 
endpoint: 'server/handlerfunction' 
}, 
text: { 
uploadButton: '<i></i> Click me now and upload a product image' 
}, 
template: 
'<div>' + 
'<pre><span>{dragZoneText}</span></pre>' + 
'<div>{uploadButtonText}</div>' + 
'<span><span>{dropProcessingText}</span>'+ 
'<span></span></span>' + 
'<ul></ul>' + 
'</div>', 
classes: { 
success: 'alert alert-success', 
fail: 'alert alert-error' 
}, 
debug: true 
}); 
} 
window.onload = createUploader; 
</script> 
这是基于Bootstrap实现对Fine Uploader最简单的前端调用.前端一般需要做两件事A:添加Css+Js文件引用.B:在Js中实例化qq.FineUploder对象.运行效果如下:

