jQuery File Upload文件上传插件API使用详解

汉王 jQuery常用插件 2021年04月02日 收藏
jQuery File Upload 是一个Jquery文件上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。

官网链接:https://github.com/blueimp/jQuery-File-Upload/wiki

使用方法:

1. 需要加载的js文件:
  1. jquey-1.11.3.min.js
  2. jquery-ui-widget.js
  3. jquery.iframe-transport.js
  4. jquery.fileupload.js
2. html代码:
  1. <input id="fileupload" type="file" name="files[]" data-url="server/php/" multiple>
3. js代码:
  1. $(function() {
  2. $('#fileupload').fileupload({
  3. dataType: 'json',
  4. done: function(e, data) {
  5. $.each(data.result.files,
  6. function(index, file) {
  7. $('<p/>').text(file.name).appendTo(document.body);
  8. });
  9. }
  10. });
  11. });
3.1 显示上传进度条:
  1. $('#fileupload').fileupload({
  2. progressall: function(e, data) {
  3. var progress = parseInt(data.loaded / data.total * 100, 10);
  4. $('#progress .bar').css('width', progress + '%');
  5. }
  6. });
3.2 需要一个<div>容器用来显示进:3
  1. <div id="progress">
  2. <div class="bar" style="width: 0%;">
  3. </div>
  4. </div>
4. API

4.1 Initialization:
在上传按钮上调用fileupload()方法;
示例:
  1. $('#fileupload').fileupload();
4.2 Options :
1: url:请求发送的目标url
  1. Type: string
  2. Example: '/path/to/upload/handler.json'
2.Type: 文件上传HTTP请求方式,可以选择“POST”,“PUT”或者"PATCH",

默认"POST"

Type: string

Example: 'PUT'

3. dataType:希望从服务器返回的数据类型,默认"json"

Type: string

Example: 'json'

4. autoUpload:默认情况下,只要用户点击了开始按钮被添加至组件的文件会立即上传。将autoUpload值设为true可以自动上传。

Type: boolean

Default: true

5. acceptFileTypes:允许上传的的文件类型

Example: /(\.|\/)(gif|jpe?g|png|xlsx)$/i

6. maxFileSize: 最大上传文件大小

Example: 999000 (999KB) //单位:B

7. minFileSize:最小上传文件大小

Example: 100000 (100KB) //单位:B

8.previewMaxWidth : 图片预览区域最大宽度

Example: 100 //单位:px

4.3 Callback Options:
使用方法一:函数属性
实例:
  1. $('#fileupload').fileupload({
  2. drop: function(e, data) {
  3. $.each(data.files,
  4. function(index, file) {
  5. alert('Dropped file: ' + file.name);
  6. });
  7. },
  8. change: function(e, data) {
  9. $.each(data.files,
  10. function(index, file) {
  11. alert('Selected file: ' + file.name);
  12. });
  13. }
  14. });
使用方法二:绑定事件监听函数
实例:
  1. $('#fileupload')
  2. .bind('fileuploaddrop', function (e, data) {/* ... */})
  3. .bind('fileuploadchange', function (e, data) {/* ... */});
每个事件名称都添加前缀:”fileupload”;
注意推荐使用第二种方法。
常用的回调函数:
1. add: 当文件被添加到上传组件时被触发
  1. $('#fileupload').bind('fileuploadadd', function (e, data) {/* ... */});
  2. 或者
  3. $('#fileupload').on('fileuploadadd', function (e, data) {/* ... */});
2. processalways: 当一个单独的文件处理队列结束(完成或失败时)触发
3. progressall: 全局上传处理事件的回调函数
Example:
  1. $('#fileupload').on('fileuploadprogressall',
  2. function(e, data) { //进度条显示
  3. var progress = parseInt(data.loaded / data.total * 100, 10);
  4. $('#progress .progress-bar').css('width', progress + '%');
  5. });
4. fail : 上传请求失败时触发的回调函数,如果服务器返回一个带有error属性的json响应这个函数将不会被触发。

5. done : 上传请求成功时触发的回调函数,如果服务器返回一个带有error属性的json响应这个函数也会被触发。

6. always : 上传请求结束时(成功,错误或者中止)都会被触发。

二、判断上传类型

  1. //初始化,主要是设置上传参数,以及事件处理方法(回调函数)
  2. $("input[name='fileupload']").fileupload({
  3. autoUpload: true,
  4. //是否自动上传
  5. url: "guestFile/upload.action",
  6. //上传地址
  7. dataType: "json",
  8. done: function(e, data) { //设置文件上传完毕事件的回调函数
  9. if (data.result.result == true) {
  10. $("#guestFileId").val(data.result.guestFileId);
  11. alert("文件上传成功!");
  12. }
  13. },
  14. add: function(e, data) { //判断文件类型 var acceptFileTypes = /\/(pdf|xml)$/i;
  15. var acceptFileTypes = /^gif|jpe?g|png|doc|docx|xls|xlsx|pdf|txt$/i;
  16. var name = data.originalFiles[0]["name"];
  17. var index = name.lastIndexOf(".") + 1;
  18. var fileType = name.substring(index, name.length);
  19. if (!acceptFileTypes.test(fileType)) {
  20. alert("上传文件类型不对!");
  21. return;
  22. }
  23. var size = data.originalFiles[0]["size"];
  24. if (size > (1024 * 10 * 1024)) {
  25. alert("上传文件超过最大限制!");
  26. return;
  27. }
  28. data.submit();
  29. }
  30. });