WebUploader单页多实例实现
来源:互联网 发布:淘宝c店都去哪了 编辑:程序博客网 时间:2024/06/08 01:15
WebUploader是前端实现上传文件的一个控件
可以实现分片上传,跟踪进度,拖拽上传,图片的预览与压缩,拖拽,过滤,多选,黏贴等添加文件方式的可拓展UI组件
1,需求-单页多实例:
一个公司List页面,有一个Table,行项目是各个公司数据每行都有一个上传的按钮,用于上传本公司下的文件(需求是先选择图片,再通过点击上传按钮完成上传,故WebUploader控件配置为非立即上传)
2,粗糙的实现:依靠标志位多行共用一个实例
起初,所有行项目依靠一个标志位实现共用一个WebUploader实例这样的做法如果在A公司上传后,不点击上传按钮,在B公司上传文件后,再点击A行的上传按钮就会把B公司的文件上传给A公司
3,多个WebUploader实例
1)引入
<script type="text/javascript" src="../lib/webuploader.min.js"></script>
2)Html-Table部分代码:
从代码的语法可以看到,这段代码是thymeleaf写的
<table id="resultsTable" class="tabContent"> <tbody> <tr class="row" th:each="company, companyStatus : ${companyQualificationsList}"> <td class="col-3 text-center"> <div th:text="${company.companyDesc}">企业描述</div> </td> <td class="col-4 text-center"> <div class="uploder-container" style="height: 47px;"> <a th:id="@{(${company.companyCode})}" th:class="@{('filePicker pull-left')}"> 浏 览 </a> <div class="uploadDiv" style="height: 100%;line-height:37px"> <div> 请选择企业资质文件 </div> </div> </div> <div class="clearfix" th:if="${not #lists.isEmpty(company.companyQualificationsList)}" th:each="qualification : ${company.companyQualificationsList}"> <div style="text-align:left" th:id="${qualification.qualificationsCode}"> <span th:text="${qualification.qualificationsDesc}"></span> <a th:href="${qualification.qualificationsUrl}">下载</a> <a th:onclick="'javascript:deleteFile(\''+${company.companyCode}+'\',\''+${qualification.qualificationsCode}+'\')'">删除</a> </div> </div> </td> <td class="col-5 text-center"> <button th:id="${companyStatus.index}" type="button" class="uploaderDone btn btn-h-sm btn-w-sm btn-blue">上传</button> </td> </tr> </tbody></table>
3)JS实现WebUploader多实例
思路: 使用一个数组(uploaderArr)用于保存每个行项的WebUploader实例 在页面初始化完成后,JQuery选择器选中所有class=uploder-container的Dom(每个公司的CompanyCode唯一), 循环创建各自的WebUploader实例,并保存到uploaderArr 上传按钮的点击事件是共用的,通过CompanyCode调用对应的WebUploader实例
var uploaderArr;$(function(){ uploaderArr = new Array(); $('.uploder-container').each(function(index){ // 根据index找对象 var filePickerObj = $(this).find('.filePicker'); var row = filePickerObj.parent().parent().parent(); var uploadBtn = row.find('.uploaderDone'); var uploadDiv = row.find('.uploadDiv'); // companyCode var companyCode = filePickerObj.attr('id'); console.log("companyCode = " + companyCode); // 注册上传控件到uploaderArr : 控件对象,companyCode, uploaderArr[index] = WebUploader.create({ auto: false, method:'POST', server:url, pick: { id: filePickerObj, multiple:false }, formData:{companyCode: companyCode} }); uploaderArr[index].on('beforeFileQueued',function(file){ // 类型限制 //if(",jpg,png,ai,zip,rar,psd,pdf,cdr,psd,tif,".indexOf(","+file.ext+",")<0){ // alert("不支持的文件格式"); //} //文件名长度限制 if(file.name.length > 50){ alert("文件名超长"); return false; }else{ return true; } }); // 当有文件被添加进队列的时候 uploaderArr[index].on('fileQueued', function (file) { uploadDiv.html(""); if(file.name.length > 50){ stringObject.substring(0,stop) } uploadDiv.append('<div >' + file.name + '</div>'); }); //上传成功(注意:后台返回值这里可以获取到) uploaderArr[index].on('uploadSuccess',function(file,reponse){ if(reponse.resCode == "0"){ alert("上传成功"); }else{ alert("上传失败 原因: " + reponse.message); } window.location.reload(); }); // 注册全部按钮事件 uploadBtn.click(function(){ var btnIndex = $(this).attr('id'); var uploader = uploaderArr[btnIndex]; uploader.upload(); }); });});
不足之处: 这里没有做进度条和图片选择后的预览,网上的例子很多就不赘述了
在此只是提供一个思路,相信通过以上代码修修补补改改,应该可以实现了吧
变更记录
20170109:
排版微调
阅读全文
0 0
- WebUploader单页多实例实现
- webuploader 使用实例
- WebUploader图片上传实例
- webuploader 实现文件断点续传
- webuploader+springmvc实现图片上传
- 插件webuploader实现文件上传
- webUploader插件实现文件上传
- webuploader实现大文件上传
- 插件webuploader实现文件上传
- 插件webuploader实现文件上传
- webuploader
- webuploader
- webuploader
- Webuploader 多实例传参教程
- webuploader 实现大文件 分片上传
- JFinal+WebUploader实现图片的异步上传
- webuploader+springMvc+JSP 多图上传实现
- WebUploader+SpringMVC实现文件上传功能
- ReviveOverlay
- slf4j 和 log4j合用的(Maven)配置
- PHP并发
- 前端学习目录收藏
- python中list.insert()中出现None
- WebUploader单页多实例实现
- java项目的开发流程
- Hashmap的底层实现
- HTML5 内置本地数据库之Sqlite
- 贪心算法的经典案例——最大整数 java实现
- Search a 2D Matirx II
- 牛顿迭代法
- 微信小程序:全局变量和本地存储什么时候用那个
- armv8 el0和el1 异常处理的过程