handlers.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. //文件上传成功后操作
  2. function att_show(serverData,file)
  3. {
  4. var serverData = serverData.replace(/<div.*?<\/div>/g,'');
  5. var data = serverData.split(',');
  6. //附件aid
  7. var id = data[0];
  8. //附件地址
  9. var src = data[1];
  10. //附件类型
  11. var ext = data[2];
  12. //附件名称
  13. var filename = data[3];
  14. //上传失败,提示上传信息
  15. if(id == 0) {
  16. try{
  17. Wind.use("artDialog",function(){
  18. art.dialog({
  19. id:'error',
  20. icon: 'error',
  21. content: src,
  22. cancelVal: '确定',
  23. cancel: function(){
  24. $("#"+file.id).remove();
  25. }
  26. });
  27. });
  28. }catch(err){
  29. alert(src);
  30. $("#"+file.id).remove();
  31. }
  32. return false;
  33. }
  34. //如果是图片类型附件,则显示对应图片,否则显示附件类型图片
  35. var img = "";
  36. if(ext == 1) {
  37. img = '<div class="get selected" id="aid-'+id+'"><a class="del" href="javascript:;">删除</a> <img onclick="att_cancel(this,'+id+',\'upload\')" width="87" height="98" src="'+src+'" data-id="'+id+'" data-path="'+src+'" alt="上传完成" title="'+filename+'"><input type="text" class="J_file_desc" name="flashatt['+id+'][desc]" placeholder="请输入描述" value="'+filename+'" style="width:68px"></div>';
  38. } else {
  39. img = '<div class="get selected" id="aid-'+id+'"><a class="del" href="javascript:;">删除</a> <img onclick="att_cancel(this,'+id+',\'upload\')" width="87" height="98" src="'+GV.DIMAUB+'public/images/ext/'+ext+'.png" data-id="'+id+'" data-path="'+src+'" alt="上传完成" title="'+filename+'"><input type="text" class="J_file_desc" name="flashatt['+id+'][desc]" placeholder="请输入描述" value="'+filename+'" style="width:68px"></div>';
  40. }
  41. //设置附件标识
  42. $("#"+file.id).removeClass("J_empty").addClass("uploaded").html(img);
  43. //设置已经选定附件
  44. $('#att-status').append('|'+src);
  45. $('#att-name').append('|'+filename);
  46. }
  47. //上传好的附件,选中/取消选中
  48. function att_cancel(obj,id,source){
  49. //图片地址
  50. var src = $(obj).attr("data-path");
  51. //上传图片文件名
  52. var filename = $(obj).attr("title");
  53. //选择状态中的数据对象
  54. var selected = $("#fsUploadProgress .selected");
  55. //检查是否已经被选中
  56. if($("#aid-"+id).hasClass('selected')){
  57. //去除选中状态
  58. $("#aid-"+id).removeClass("selected");
  59. selected = $("#fsUploadProgress .selected");
  60. //取得被选中图片集合
  61. var imgstr = $("#att-status").html();
  62. //计算被选中的附件长度
  63. var length = selected.children("img").length;
  64. var strs = filenames = '';
  65. for(var i=0;i<length;i++){
  66. //图片地址
  67. strs += '|'+selected.children("img").eq(i).attr('data-path');
  68. //图片文件名
  69. filenames += '|'+selected.children("img").eq(i).attr('title');
  70. }
  71. //放入被选中的容器
  72. $('#att-status').html(strs);
  73. $('#att-name').html(filenames);
  74. //取消选中
  75. if(source=='upload'){
  76. $('#att-status-del').append('|'+id);
  77. }
  78. } else {
  79. //增加选中状态
  80. $("#aid-"+id).addClass("selected");
  81. $('#att-status').append('|'+src);
  82. $('#att-name').append('|'+filename);
  83. var imgstr_del = $("#att-status-del").html();
  84. var imgstr_del_obj = selected.children("img")
  85. var length_del = imgstr_del_obj.length;
  86. var strs_del='';
  87. for(var i=0;i<length_del;i++){
  88. strs_del += '|'+imgstr_del_obj.eq(i).attr('data-id');
  89. }
  90. if(source=='upload'){
  91. $('#att-status-del').html(strs_del);
  92. }
  93. }
  94. }
  95. //文件选择对话框显示之前触发
  96. function fileDialogStart() {
  97. /* I don't need to do anything here */
  98. }
  99. //当文件选择对话框关闭消失时,如果选择的文件成功加入上传队列,那么针对每个成功加入的文件都会触发一次该事件
  100. function fileQueued(file) {
  101. if(file!= null){
  102. try {
  103. //容器
  104. var targetID = this.customSettings.progressTarget;
  105. var id = file.id;
  106. var name = file.name;
  107. $("#"+targetID).prepend('<li class="J_empty" id="'+id+'"><div class="schedule"><em>0%</em><span style="width: 0%;"></span></div></li>');
  108. } catch (ex) {
  109. this.debug(ex);
  110. }
  111. }
  112. }
  113. //当选择文件对话框关闭,并且所有选择文件已经处理完成(加入上传队列成功或者失败)时,此事件被触发
  114. function fileDialogComplete(numFilesSelected, numFilesQueued)
  115. {
  116. try {
  117. //选择后自动上传
  118. this.startUpload();
  119. } catch (ex) {
  120. this.debug(ex);
  121. }
  122. }
  123. //在文件往服务端上传之前触发此事件
  124. function uploadStart(file)
  125. {
  126. return true;
  127. }
  128. //该事件由flash定时触发,提供三个参数分别访问上传文件对象、已上传的字节数,总共的字节数。
  129. //因此可以在这个事件中来定时更新页面中的UI元素,以达到及时显示上传进度的效果。
  130. function uploadProgress(file, bytesLoaded, bytesTotal)
  131. {
  132. //上传进度
  133. var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
  134. var id = file.id;
  135. $("#"+id+" em").html(percent+"%");
  136. $("#"+id+" span").width(percent+"%");
  137. }
  138. //当文件上传的处理已经完成并且服务端返回了200的HTTP状态时,触发此事件。
  139. function uploadSuccess(file, serverData)
  140. {
  141. //文件上传完毕回调
  142. //serverData 服务器返回的数据
  143. //file 文件对象
  144. att_show(serverData,file);
  145. }
  146. //当上传队列中的一个文件完成了一个上传周期,无论是成功(uoloadSuccess触发)还是失败(uploadError触发),此事件都会被触发
  147. function uploadComplete(file)
  148. {
  149. if (this.getStats().files_queued > 0)
  150. {
  151. this.startUpload();
  152. }
  153. }
  154. //无论什么时候,只要上传被终止或者没有成功完成,那么该事件都将被触发
  155. function uploadError(file, errorCode, message) {
  156. var msg;
  157. switch (errorCode)
  158. {
  159. case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
  160. msg = "上传错误: " + message;
  161. break;
  162. case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
  163. msg = "上传错误";
  164. break;
  165. case SWFUpload.UPLOAD_ERROR.IO_ERROR:
  166. msg = "服务器 I/O 错误";
  167. break;
  168. case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
  169. msg = "服务器安全认证错误";
  170. break;
  171. case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
  172. msg = "附件安全检测失败,上传终止";
  173. break;
  174. case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
  175. msg = '上传取消';
  176. break;
  177. case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
  178. msg = '上传终止';
  179. break;
  180. case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
  181. msg = '单次上传文件数限制为 '+swfu.settings.file_upload_limit+' 个';
  182. break;
  183. default:
  184. msg = message;
  185. break;
  186. }
  187. alert(msg);
  188. $("#"+file.id).remove();
  189. }
  190. //当选择文件对话框关闭消失时,如果选择的文件加入到上传队列中失败,
  191. //那么针对每个出错的文件都会触发一次该事件(此事件和fileQueued事件是二选一触发,文件添加到队列只有两种可能,成功和失败)。
  192. function fileQueueError(file, errorCode, message)
  193. {
  194. var errormsg;
  195. switch (errorCode) {
  196. case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
  197. errormsg = "请不要上传空文件";
  198. break;
  199. case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
  200. errormsg = "队列文件数量超过设定值";
  201. break;
  202. case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
  203. errormsg = "文件尺寸超过设定值";
  204. break;
  205. case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
  206. errormsg = "文件类型不合法";
  207. default:
  208. errormsg = '上传错误,请与管理员联系!';
  209. break;
  210. }
  211. alert(errormsg);
  212. $("#"+file.id).remove();
  213. }