uploads_tool.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /**
  2. * 统一构造话柄的函数
  3. * @returns
  4. */
  5. function pluploadCallbackFuncForCover() {
  6. return {
  7. FilesAdded: pluploadFuncFilesAddedForCover,
  8. UploadProgress: pluploadFuncUploadProgressForCover,
  9. FileUploaded: pluploadFuncFileUploadedForCover,
  10. UploadComplete: pluploadFuncUploadCompleteForCover,
  11. Error: pluploadFuncErrorForCover
  12. }
  13. }
  14. /**
  15. * 单个文件上传函数
  16. * @param string idName 标识
  17. * @param Object cbFuncObjs 回掉函数对象.
  18. * @returns
  19. */
  20. function pluploadOneCover(idName, cbFuncObjs, type = 'image') {
  21. var isMulitSelection = false; // 是否允许多选.
  22. var mimeTypes = pluploadSelectMime(type); // 定义可选择的文件类型
  23. var multipartParams = {
  24. 'upload_token': window._UPLOAD_TOKEN_, // 必写,通信token
  25. 'receive_type': 'plupload', // 必写. 接收响应格式.
  26. 'ext_type': 'image', // 必写. 后端允许的文件格式类型组,多个半角逗号分隔开.
  27. 'module_id': "video",
  28. 'related_id': GetQueryString('uid'),
  29. 'max_width': "1024",
  30. 'max_height': "2000"
  31. };
  32. var chunkMaxSizeKb = 10 * 1024; // 10M
  33. var uploadMaxSizeKb = 1000 * 1024; //1000M
  34. return pluploadBase(idName, isMulitSelection, mimeTypes, multipartParams, chunkMaxSizeKb, uploadMaxSizeKb, true, cbFuncObjs);
  35. }
  36. /**
  37. * plupload选中文件后回调
  38. */
  39. function pluploadFuncFilesAddedForCover(idName, up, files) {
  40. layui.use(['jquery', 'element', 'layer'], function () {
  41. let $ = layui.jquery;
  42. let element = layui.element;
  43. let layer = layui.layer;
  44. let previewId = 'pl_preview_' + idName;
  45. let file = files[0];
  46. pluploadPreviewImage(file, function (b64url) {
  47. $('#' + previewId).attr('src', b64url);
  48. });
  49. let progressId = 'pl_progress_' + idName;
  50. element.progress(progressId, '0%'); //进度条复位
  51. layer.msg('上传中', {icon: 16, time: 0, shade: 0.3, shadeClose: false});
  52. });
  53. }
  54. /**
  55. * plupload上传过程中回调
  56. */
  57. function pluploadFuncUploadProgressForCover(idName, up, file) {
  58. layui.use(['jquery', 'element', 'layer'], function () {
  59. let $ = layui.jquery;
  60. let element = layui.element;
  61. let layer = layui.layer;
  62. // 隐藏按钮
  63. let btnId = 'pl_btn_select_' + idName;
  64. $('#' + btnId).hide();
  65. let progressId = 'pl_progress_' + idName;
  66. element.progress(progressId, file.percent + '%');
  67. });
  68. }
  69. /**
  70. * plupload单个文件上传完回调
  71. */
  72. function pluploadFuncFileUploadedForCover(idName, up, file, info) {
  73. layui.use(['jquery', 'element', 'layer'], function () {
  74. let $ = layui.jquery;
  75. let element = layui.element;
  76. let layer = layui.layer;
  77. let previewId = 'pl_preview_' + idName;
  78. let obj = $.parseJSON(info.response);
  79. if (obj.hasOwnProperty('result')) {
  80. let result = obj.result;
  81. $('#' + idName).val(result.link_url);
  82. if (file.name.slice(-3) === 'ceb'){
  83. $('#' + previewId).attr('data-ceb-url', result.link_url);
  84. onceRender($('#' + previewId));
  85. }
  86. } else {
  87. if (obj.hasOwnProperty('error')) {
  88. let errorInfo = obj.error;
  89. let resultId = 'pl_result_' + idName;
  90. let hcode = '<span class="layui-font-red">[' + errorInfo.code + '错误信息]【' + file.name + '】' + errorInfo.message + '</span>';
  91. $('#' + resultId).html(hcode);
  92. let progressId = 'pl_progress_' + idName;
  93. element.progress(progressId, '0%'); //进度条复位
  94. }
  95. }
  96. // 显示按钮
  97. // let btnId = 'pl_btn_select_' + idName;
  98. // $('#' + btnId).show();
  99. });
  100. }
  101. /**
  102. * plupload所有文件上传完回调
  103. */
  104. function pluploadFuncUploadCompleteForCover(idName, up, files) {
  105. layui.use(['jquery', 'element', 'layer'], function () {
  106. let $ = layui.jquery;
  107. let element = layui.element;
  108. let layer = layui.layer;
  109. let resultId = 'pl_result_' + idName;
  110. $('#' + resultId).empty();
  111. layer.close(layer.index); // 关闭加载层,layer.index参数,自动找最新的层
  112. // 显示按钮
  113. let btnId = 'pl_btn_select_' + idName;
  114. $('#' + btnId).show();
  115. });
  116. }
  117. /**
  118. * plupload错误回调
  119. */
  120. function pluploadFuncErrorForCover(idName, up, err) {
  121. layui.use(['jquery', 'element', 'layer'], function () {
  122. let $ = layui.jquery;
  123. let element = layui.element;
  124. let layer = layui.layer;
  125. // 显示按钮
  126. let btnId = 'pl_btn_select_' + idName;
  127. $('#' + btnId).show();
  128. let resultId = 'pl_result_' + idName;
  129. let hcode = '<span class="layui-font-red">[' + err.code + '错误信息]' + err.message + '</span>';
  130. $('#' + resultId).html(hcode);
  131. layer.close(layer.index); // 关闭加载层,layer.index参数,自动找最新的层
  132. });
  133. }