几款极好的 JavaScript 文件上传插件

来源:互联网 发布:教数学的软件 编辑:程序博客网 时间:2024/06/14 23:11

jQuery File Uploader

这是最受欢迎的 jQuery 文件上传组件,支持批量上传,拖放上传,显示上传进度条以及校验功能。

支持预览图片、音频和视频,支持跨域上传和客户端图片缩放,支持的服务端平台有:PHP, Python, Ruby on Rails, Java, Node.js, Go 等等。

使用示例:

[javascript] view plain copy
print?
  1. (</span><span class="keyword">function</span><span>()&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span><span class="string">'use&nbsp;strict'</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">//&nbsp;Change&nbsp;this&nbsp;to&nbsp;the&nbsp;location&nbsp;of&nbsp;your&nbsp;server-side&nbsp;upload&nbsp;handler:</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>varurl&nbsp;=&nbsp;window.location.hostname&nbsp;===&nbsp;<span class="string">'blueimp.github.io'</span><span>?&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="string">'//jquery-file-upload.appspot.com/'</span><span>:&nbsp;</span><span class="string">'server/php/'</span><span>;&nbsp;&nbsp;</span></span></li><li class=""><span>$(<span class="string">'#fileupload'</span><span>).fileupload({&nbsp;&nbsp;</span></span></li><li class="alt"><span>url:&nbsp;url,&nbsp;&nbsp;</span></li><li class=""><span>dataType:<span class="string">'json'</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>done:<span class="keyword">function</span><span>&nbsp;(e,&nbsp;data)&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>$.each(data.result.files,<span class="keyword">function</span><span>&nbsp;(index,&nbsp;file)&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>$(<span class="string">'&lt;p/&gt;'</span><span>).text(file.name).appendTo(</span><span class="string">'#files'</span><span>);&nbsp;&nbsp;</span></span></li><li class=""><span>});&nbsp;&nbsp;</span></li><li class="alt"><span>},&nbsp;&nbsp;</span></li><li class=""><span>progressall:<span class="keyword">function</span><span>&nbsp;(e,&nbsp;data)&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>varprogress&nbsp;=&nbsp;parseInt(data.loaded&nbsp;/&nbsp;data.total&nbsp;*&nbsp;100,&nbsp;10);&nbsp;&nbsp;</span></li><li class=""><span>$(<span class="string">'#progress&nbsp;.progress-bar'</span><span>).css(&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="string">'width'</span><span>,&nbsp;&nbsp;</span></span></li><li class=""><span>progress&nbsp;+<span class="string">'%'</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>);&nbsp;&nbsp;</span></li><li class=""><span>}&nbsp;&nbsp;</span></li><li class="alt"><span>}).prop(<span class="string">'disabled'</span><span>,&nbsp;!$.support.fileInput)&nbsp;&nbsp;</span></span></li><li class=""><span>.parent().addClass($.support.fileInput&nbsp;?&nbsp;undefined&nbsp;:<span class="string">'disabled'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>});&nbsp;&nbsp;</span></li></ol></div><pre name="code" class="javascript" style="display: none;">(function() {‘use strict’;// Change this to the location of your server-side upload handler:varurl = window.location.hostname === ‘blueimp.github.io’?‘//jquery-file-upload.appspot.com/’: ‘server/php/’;(‘#fileupload’).fileupload({
    url: url,
    dataType:’json’,
    done:function (e, data) {
    $.each(data.result.files,function (index, file) {
    $(‘<p/>’).text(file.name).appendTo(‘#files’);
    });
    },
    progressall:function (e, data) {
    varprogress = parseInt(data.loaded / data.total * 100, 10);
    $(‘#progress .progress-bar’).css(
    ‘width’,
    progress +’%’
    );
    }
    }).prop(‘disabled’, !
    .support.fileInput).parent().addClass($.support.fileInput ? undefined :’disabled’);});



插件下载在线演示

DropZoneJS

DropzoneJS 是一个用于现代浏览器的开源的拖放上传插件,最大的特色是即时图片预览功能。

使用方法非常简单,只需添加 class 即可:

?
<formid="my-awesome-dropzone"action="/target"class="dropzone"></form>

或者手动实例化:

?
newDropzone("div#my-dropzone", {/* options */ });

可以添加更多参数:

?
Dropzone.options.myAwesomeDropzone = { maxFilesize: 1 };

发可以自定义事件:

?
Dropzone.options.myDropzone({
init:function() {
this.on("error",function(file, message) { alert(message); });
}
});
// or if you need to access a Dropzone somewhere else:
varmyDropzone = Dropzone.forElement("div#my-dropzone");
myDropzone.on("error",function(file, message) { alert(message); });<span style="line-height: 1.5;"> </span>

插件下载在线演示

Uploadify

Uploadify 有两个版本,HTML5 方法上传版本和传统的 Flash 上传。支持高度自定义,可以完美的继承到你的网站中。

Flash 版本兼容性好,使用示例:

?
$(function() {
$("#file_upload_1").uploadify({
height : 30,
swf :'/uploadify/uploadify.swf',
uploader :'/uploadify/uploadify.php',
width : 120
});
});

插件下载在线演示

FineUploader

这个 JavaScript 插件可以帮助你在网站中集成体验极好的文件上传功能。可以结合 jQuery 或者 Bootstrap 使用。

主要特色:

  • 批量上传
  • 显示进度条
  • 拖放上传
  • 自动或者手动上传,可取消
  • 自定义错误提示信息
  • 自动或者手动重试
  • 内置的校验规则
  • 可编辑文件名称

使用示例:

(1)手动触发上传

[javascript] view plain copy
print?
  1. <divid=“manual-fine-uploader”></div>  
  2. <divid=”triggerUpload”class=“btn btn-primary”style=“margin-top: 10px;”>  
  3. <iclass=”icon-upload icon-white”></i> Upload now  
  4. </div>  
  5. <scriptsrc=”http://code.jquery.com/jquery-latest.js”></script>  
  6. <scriptsrc=”jquery.fineuploader-{VERSION}.js”></script>  
  7. <script>  
  8. (document).ready(<span class="keyword">function</span><span>()&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span>&nbsp;manualuploader&nbsp;=&nbsp;(</span><span class="string">'#manual-fine-uploader'</span><span>).fineUploader({&nbsp;&nbsp;</span></span></li><li class=""><span>request:&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>endpoint:&nbsp;<span class="string">'server/handleUploads'</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>},&nbsp;&nbsp;</span></li><li class="alt"><span>autoUpload:&nbsp;<span class="keyword">false</span><span>,&nbsp;&nbsp;</span></span></li><li class=""><span>text:&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>uploadButton:&nbsp;<span class="string">'&lt;iclass="icon-plus&nbsp;icon-white"&gt;&lt;/i&gt;&nbsp;Select&nbsp;Files'</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>}&nbsp;&nbsp;</span></li><li class="alt"><span>});&nbsp;&nbsp;</span></li><li class=""><span>$(’#triggerUpload’).click(function() {  
  9. manualuploader.fineUploader(’uploadStoredFiles’);  
  10. });  
  11. });  
  12. </script>  
<divid="manual-fine-uploader"></div><divid="triggerUpload"class="btn btn-primary"style="margin-top: 10px;"><iclass="icon-upload icon-white"></i> Upload now</div><scriptsrc="http://code.jquery.com/jquery-latest.js"></script><scriptsrc="jquery.fineuploader-{VERSION}.js"></script><script>$(document).ready(function() {var manualuploader = $('#manual-fine-uploader').fineUploader({request: {endpoint: 'server/handleUploads'},autoUpload: false,text: {uploadButton: '<iclass="icon-plus icon-white"></i> Select Files'}});$('#triggerUpload').click(function() {manualuploader.fineUploader('uploadStoredFiles');});});</script>


(2)编辑文件名称

[javascript] view plain copy
print?
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4. <metacharset=”utf-8”>  
  5. <title>Fine Uploader - jQuery Wrapper Minimal Demo</title>  
  6. <linkhref=”fineuploader-{VERSION}.css”rel=“stylesheet”>  
  7. </head>  
  8. <body>  
  9. <divid=”jquery-wrapped-fine-uploader”></div>  
  10. <divid=”triggerUpload”class=“btn btn-primary”style=“margin-top: 10px;”>  
  11. <iclass=”icon-upload icon-white”></i> Upload now  
  12. </div>  
  13. <scriptsrc=”http://code.jquery.com/jquery-latest.js”></script>  
  14. <scriptsrc=”jquery.fineuploader-{VERSION}.js”></script>  
  15. <script>  
  16. (document).ready(<span class="keyword">function</span><span>&nbsp;()&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>(<span class="string">'#myFineUploader'</span><span>).fineUploader({&nbsp;&nbsp;</span></span></li><li class=""><span>request:&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>endpoint:&nbsp;<span class="string">'server/handleUploads'</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>},&nbsp;&nbsp;</span></li><li class="alt"><span>editFilename:&nbsp;{&nbsp;&nbsp;</span></li><li class=""><span>enabled:&nbsp;<span class="keyword">true</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>},&nbsp;&nbsp;</span></li><li class=""><span>autoUpload:&nbsp;<span class="keyword">false</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>});&nbsp;&nbsp;</span></li><li class=""><span>(<span class="string">'#triggerUpload'</span><span>).click(</span><span class="keyword">function</span><span>()&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>(’#myFineuploader’).fineUploader(‘uploadStoredFiles’);  
  17. });  
  18. </script>  
  19. </body>  
  20. </html>  
<!DOCTYPE html><html><head><metacharset="utf-8"><title>Fine Uploader - jQuery Wrapper Minimal Demo</title><linkhref="fineuploader-{VERSION}.css"rel="stylesheet"></head><body><divid="jquery-wrapped-fine-uploader"></div><divid="triggerUpload"class="btn btn-primary"style="margin-top: 10px;"><iclass="icon-upload icon-white"></i> Upload now</div><scriptsrc="http://code.jquery.com/jquery-latest.js"></script><scriptsrc="jquery.fineuploader-{VERSION}.js"></script><script>$(document).ready(function () {$('#myFineUploader').fineUploader({request: {endpoint: 'server/handleUploads'},editFilename: {enabled: true},autoUpload: false});$('#triggerUpload').click(function() {$('#myFineuploader').fineUploader('uploadStoredFiles');});</script></body></html>


(3)自定义选项

[javascript] view plain copy
print?
  1. <divid=“restricted-fine-uploader”></div>  
  2. <scriptsrc=”http://code.jquery.com/jquery-latest.js”></script>  
  3. <scriptsrc=”jquery.fineuploader-{VERSION}.js”></script>  
  4. <script>  
  5. (document).ready(<span class="keyword">function</span><span>()&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>(<span class="string">'#restricted-fine-uploader'</span><span>).fineUploader({&nbsp;&nbsp;</span></span></li><li class="alt"><span>request:&nbsp;{&nbsp;&nbsp;</span></li><li class=""><span>endpoint:&nbsp;<span class="string">'server/success.html'</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>},&nbsp;&nbsp;</span></li><li class=""><span>multiple:&nbsp;<span class="keyword">false</span><span>,&nbsp;&nbsp;</span></span></li><li class="alt"><span>validation:&nbsp;{&nbsp;&nbsp;</span></li><li class=""><span>allowedExtensions:&nbsp;[<span class="string">'jpeg'</span><span>,&nbsp;</span><span class="string">'jpg'</span><span>,&nbsp;</span><span class="string">'txt'</span><span>],&nbsp;&nbsp;</span></span></li><li class="alt"><span>sizeLimit:&nbsp;51200&nbsp;<span class="comment">//&nbsp;50&nbsp;kB&nbsp;=&nbsp;50&nbsp;*&nbsp;1024&nbsp;bytes</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>},&nbsp;&nbsp;</span></li><li class="alt"><span>text:&nbsp;{&nbsp;&nbsp;</span></li><li class=""><span>uploadButton:&nbsp;<span class="string">'Click&nbsp;or&nbsp;Drop'</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>},&nbsp;&nbsp;</span></li><li class=""><span>showMessage:&nbsp;<span class="keyword">function</span><span>(message)&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="comment">//&nbsp;Using&nbsp;Bootstrap's&nbsp;classes</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>$(’#restricted-fine-uploader’).append(‘<divclass=”alert alert-error”>’ + message + ‘</div>’);  
  6. }  
  7. });  
  8. });  
  9. </script>  
<divid="restricted-fine-uploader"></div><scriptsrc="http://code.jquery.com/jquery-latest.js"></script><scriptsrc="jquery.fineuploader-{VERSION}.js"></script><script>$(document).ready(function() {$('#restricted-fine-uploader').fineUploader({request: {endpoint: 'server/success.html'},multiple: false,validation: {allowedExtensions: ['jpeg', 'jpg', 'txt'],sizeLimit: 51200 // 50 kB = 50 * 1024 bytes},text: {uploadButton: 'Click or Drop'},showMessage: function(message) {// Using Bootstrap's classes$('#restricted-fine-uploader').append('<divclass="alert alert-error">' + message + '</div>');}});});</script>


(4)显示图片缩略图

[javascript] view plain copy
print?
  1. <divid=“thumbnail-fine-uploader”></div>  
  2. <scriptsrc=”http://code.jquery.com/jquery-latest.js”></script>  
  3. <scriptsrc=”jquery.fineuploader-{VERSION}.js”></script>  
  4. <script>  
  5. (document).ready(<span class="keyword">function</span><span>()&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>(<span class="string">'#thumbnail-fine-uploader'</span><span>).fineUploader({&nbsp;&nbsp;</span></span></li><li class="alt"><span>request:&nbsp;{&nbsp;&nbsp;</span></li><li class=""><span>endpoint:&nbsp;<span class="string">'server/success.html'</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>},&nbsp;&nbsp;</span></li><li class=""><span>validation:&nbsp;{&nbsp;&nbsp;</span></li><li class="alt"><span>allowedExtensions:&nbsp;[<span class="string">'jpeg'</span><span>,&nbsp;</span><span class="string">'jpg'</span><span>,&nbsp;</span><span class="string">'gif'</span><span>,&nbsp;</span><span class="string">'png'</span><span>]&nbsp;&nbsp;</span></span></li><li class=""><span>},&nbsp;&nbsp;</span></li><li class="alt"><span>text:&nbsp;{&nbsp;&nbsp;</span></li><li class=""><span>uploadButton:&nbsp;<span class="string">'Click&nbsp;or&nbsp;Drop'</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>}&nbsp;&nbsp;</span></li><li class=""><span>}).on(<span class="string">'complete'</span><span>,&nbsp;</span><span class="keyword">function</span><span>(event,&nbsp;id,&nbsp;fileName,&nbsp;responseJSON)&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">if</span><span>&nbsp;(responseJSON.success)&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>$(this).append(‘<imgsrc=”img/success.jpg”alt=”’ + fileName + ‘”>’);  
  6. }  
  7. });  
  8. });  
  9. </script>  
<divid="thumbnail-fine-uploader"></div><scriptsrc="http://code.jquery.com/jquery-latest.js"></script><scriptsrc="jquery.fineuploader-{VERSION}.js"></script><script>$(document).ready(function() {$('#thumbnail-fine-uploader').fineUploader({request: {endpoint: 'server/success.html'},validation: {allowedExtensions: ['jpeg', 'jpg', 'gif', 'png']},text: {uploadButton: 'Click or Drop'}}).on('complete', function(event, id, fileName, responseJSON) {if (responseJSON.success) {$(this).append('<imgsrc="img/success.jpg"alt="' + fileName + '">');}});});</script>


(5)限制文件上传数


[javascript] view plain copy
print?
  1. <divid=“filelimit-fine-uploader”></div>  
  2. <scriptsrc=”http://code.jquery.com/jquery-latest.js”></script>  
  3. <scriptsrc=”jquery.fineuploader-{VERSION}.js”></script>  
  4. <script>  
  5. (document).ready(<span class="keyword">function</span><span>()&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>(’#filelimit-fine-uploader’).fineUploader({  
  6. request: {  
  7. endpoint: ’server/success.html’  
  8. },  
  9. validation: {  
  10. itemLimit: 3  
  11. }  
  12. });  
  13. });  
  14. </script>  
<divid="filelimit-fine-uploader"></div><scriptsrc="http://code.jquery.com/jquery-latest.js"></script><scriptsrc="jquery.fineuploader-{VERSION}.js"></script><script>$(document).ready(function() {$('#filelimit-fine-uploader').fineUploader({request: {endpoint: 'server/success.html'},validation: {itemLimit: 3}});});</script>


插件下载在线演示


本文转自:http://www.cnblogs.com/lhb25/p/form-enhanced-with-javascript-five.html