JS上传组件FileUpload自定义模板的使用方法


Posted in Javascript onMay 10, 2016

FileUpload 是国外一个纯javascript 写的大文件上传组件,该组件支持分片上传,断点续传,多文件等功能。
下面就为大家分享FileUpload上传组件自定义模板(FineUploaderBasic)的使用方法:

以下是配置代码:

前端配置:

<!--定义按钮-->
<div id="basic_uploader_fine"><i class="icon-upload icon-white"></i>选择文件</div>
<div id="triggerUpload">点击上传</div>
<!--显示信息-->
<div id="messages"></div>
<div id="cancelUpload" class="buttons">取消</div>
<div id="cancelAll" class="buttons">取消全部</div>
<div id="pauseUpload" class="buttons">暂停上传</div>
<div id="continueUpload" class="buttons">继续上传</div>
<script>
 $(document).ready(function() {
 $fub = $('#basic_uploader_fine');
 $messages = $('#messages');

 var uploader = new qq.FineUploaderBasic({
  debug: true,  // 开启调试模式
  multiple: true, // 多文件上传
  button: $fub[0], //上传按钮
  autoUpload: false, //不自动上传则调用uploadStoredFiless方法 手动上传
  // 验证上传文件
  validation: { 
   allowedExtensions: ['jpeg', 'jpg', 'png', 'zip' , 'rar'],
  }, 
  // 远程请求地址(相对或者绝对地址)
  request: {
   endpoint: 'server/endpoint.php'
  },
  retry: {
   enableAuto: false // defaults to false 自动重试
  }, 
  chunking: {
   enabled: true,
   partSize: 500, // 分组大小,默认为 2M
   concurrent: {
    enabled: true // 开启并发分组上传,默认并发3个
   },
   success: {
    endpoint: "server/endpoint.php?done" // 分组上传完成后处理
   }
  },
  //回调函数
  callbacks: {
  //文件开始上传
  onSubmit: function(id, fileName) {
   $messages.append('<div id="file-' + id + '" class="alert" style="margin: 20px 0 0">'+fileName+'</div>');
  },
  onUpload: function(id, fileName) {
   $('#file-' + id).addClass('alert-info')
       .html('<img src="client/loading.gif" alt="Initializing. Please hold."> ' +
        'Initializing ' +
        '“' + fileName + '”');
  },
  //进度条
  onProgress: function(id, fileName, loaded, total) {
   if (loaded < total) {
   progress = Math.round(loaded / total * 100) + '% of ' + Math.round(total / 1024) + ' kB';
   $('#file-' + id).removeClass('alert-info')
       .html('<img src="http://img.zcool.cn/community/01ff2756629d096ac725b2c8e95102.gif" width="50px" height="50px;" alt="In progress. Please hold."> ' +
         '上传文件中......' + progress);
   } else {
   $('#file-' + id).addClass('alert-info')
       .html('<img src="http://img.zcool.cn/community/01ff2756629d096ac725b2c8e95102.gif" width="50px" height="50px;" alt="Saving. Please hold."> ' +
         '上传文件中...... ');
   }
  },
  //上传完成后
  onComplete: function(id, fileName, responseJSON) {
   if (responseJSON.success) {
   var img = responseJSON['target']
   $('#file-' + id).removeClass('alert-info')
       .addClass('alert-success')
       .html('<i class="icon-ok"></i> ' +
         '上传成功! ' +
         '“' + fileName + '”'
        );
   } else {
   $('#file-' + id).removeClass('alert-info')
       .addClass('alert-error')
       .html('<i class="icon-exclamation-sign"></i> ' +
         'Error with ' +
         '“' + fileName + '”: ' +
         responseJSON.error);
   }
  },
  onError: function(id, name, reason, maybeXhrOrXdr) {
   console.log(id + '_' + name + '_' + reason);
  },  
  }  
 });

 //手动触发上传上传
  $('#triggerUpload').click(function() {
  uploader.uploadStoredFiles();
 });
 //取消某一个上传
  $('#cancelUpload').click(function() {
  uploader.cancel(0);
 });
 //取消所有未上传的文件
  $('#cancelAll').click(function() {
   //单个文件上传没有作用 因为已经在上传的不能使用这个cancelAll取消上传
   uploader.cancelAll();
 });
 //暂停上传某个文件
 $('#pauseUpload').click(function() {
   uploader.pauseUpload(0);
 });
 // 继续上传
 $('#continueUpload').click(function() {
   uploader.continueUpload(0);
 });
});
</script>

php代码:

//handler.php文件官网上下
require_once "handler.php";
$uploader = new UploadHandler();
// 文件类型限制
$uploader->allowedExtensions = array(); 
// 文件大小限制
$uploader->sizeLimit = null;
// 上传文件框
$uploader->inputName = "qqfile";
// 定义分组文件存放位置
$uploader->chunksFolder = "chunks";
$method = $_SERVER["REQUEST_METHOD"];

//上传目的文件夹(由于原来的文件存放规则不符合我们的需求所以修改了handler.php的代码添加了个文件夹生成规则【你也可以自定义】)
$uploadDirectory = $uploader->getPathName('member_avatar');
if ($method == "POST") {
 header("Content-Type: text/plain");

 // 分组上传完成后对分组进行合并
 if (isset($_GET["done"])) {
  $result = $uploader->combineChunks($uploadDirectory); // 合并分组文件

 } else {
  //开始上传文件
  $result = $uploader->handleUpload($uploadDirectory);
  // 获取上传的名称
  $result["uploadName"] = $uploader->getUploadName();

 }
 echo json_encode($result);
}
//删除文件处理
else if ($method == "DELETE") {
 $result = $uploader->handleDelete($uploadDirectory);
 echo json_encode($result);
}
else {
 header("HTTP/1.0 405 Method Not Allowed");
}

以上是一个简单的自定义模板的配置,希望对大家的学习有所帮助。

Javascript 相关文章推荐
禁止空格提交表单的js代码
Nov 17 Javascript
bootstrap改变按钮加载状态
Dec 01 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
Dec 17 Javascript
javascript数组输出的两种方式
Jan 13 Javascript
js对字符的验证方法汇总
Feb 04 Javascript
js实现九宫格图片半透明渐显特效的方法
Feb 16 Javascript
详解js的视频和音频采集
Aug 09 Javascript
js中Generator函数的深入讲解
Apr 07 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
May 10 Javascript
小程序Request的另类用法详解
Aug 09 Javascript
小程序实现图片移动缩放效果
May 26 Javascript
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
使用jQuery处理AJAX请求的基础学习教程
May 10 #Javascript
javascript关于继承解析
May 10 #Javascript
JavaScript继承学习笔记【新手必看】
May 10 #Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
May 10 #Javascript
深入剖析JavaScript:Object类型
May 10 #Javascript
JavaScript的React Web库的理念剖析及基础上手指南
May 10 #Javascript
快速解决Canvas.toDataURL 图片跨域的问题
May 10 #Javascript
You might like
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
vuex(vue状态管理)的特殊应用案例分享
2020/03/03 Javascript
原生js实现随机点名
2020/07/05 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
用Python编写一个基于终端的实现翻译的脚本
2015/04/24 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Python中元组,列表,字典的区别
2017/05/21 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python实现去除图片中指定颜色的像素功能示例
2019/04/13 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
Python 如何实现数据库表结构同步
2020/09/29 Python
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
大二自我鉴定范文
2013/10/05 职场文书
装修协议书范本
2014/04/21 职场文书
职工小家建设活动方案
2014/08/25 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
父亲节活动总结
2015/02/12 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书