uploads_tool.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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',is_no_ceb='',is_to_cloud = '') {
  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. 'is_no_ceb': is_no_ceb,
  32. 'is_to_cloud': is_to_cloud,
  33. };
  34. var chunkMaxSizeKb = 10 * 1024; // 10M
  35. var uploadMaxSizeKb = 1000 * 1024; //1000M
  36. return pluploadBase(idName, isMulitSelection, mimeTypes, multipartParams, chunkMaxSizeKb, uploadMaxSizeKb, true, cbFuncObjs);
  37. }
  38. /**
  39. * plupload选中文件后回调
  40. */
  41. function pluploadFuncFilesAddedForCover(idName, up, files) {
  42. layui.use(['jquery', 'element', 'layer'], function () {
  43. let $ = layui.jquery;
  44. let element = layui.element;
  45. let layer = layui.layer;
  46. let previewId = 'pl_preview_' + idName;
  47. let file = files[0];
  48. pluploadPreviewImage(file, function (b64url) {
  49. $('#' + previewId).attr('src', b64url);
  50. });
  51. let progressId = 'pl_progress_' + idName;
  52. element.progress(progressId, '0%'); //进度条复位
  53. layer.msg('上传中', {icon: 16, time: 0, shade: 0.3, shadeClose: false});
  54. });
  55. }
  56. /**
  57. * plupload上传过程中回调
  58. */
  59. function pluploadFuncUploadProgressForCover(idName, up, file) {
  60. layui.use(['jquery', 'element', 'layer'], function () {
  61. let $ = layui.jquery;
  62. let element = layui.element;
  63. let layer = layui.layer;
  64. // 隐藏按钮
  65. let btnId = 'pl_btn_select_' + idName;
  66. $('#' + btnId).hide();
  67. let progressId = 'pl_progress_' + idName;
  68. element.progress(progressId, file.percent + '%');
  69. });
  70. }
  71. /**
  72. * plupload单个文件上传完回调
  73. */
  74. function pluploadFuncFileUploadedForCover(idName, up, file, info) {
  75. layui.use(['jquery', 'element', 'layer'], function () {
  76. let $ = layui.jquery;
  77. let element = layui.element;
  78. let layer = layui.layer;
  79. let previewId = 'pl_preview_' + idName;
  80. let obj = $.parseJSON(info.response);
  81. if (obj.hasOwnProperty('result')) {
  82. let result = obj.result;
  83. $('#' + idName).val(result.link_url);
  84. if (file.name.slice(-3) === 'ceb'){
  85. $('#' + previewId).attr('data-ceb-url', result.link_url);
  86. onceRender($('#' + previewId));
  87. }
  88. } else {
  89. if (obj.hasOwnProperty('error')) {
  90. let errorInfo = obj.error;
  91. let resultId = 'pl_result_' + idName;
  92. let hcode = '<span class="layui-font-red">[' + errorInfo.code + '错误信息]【' + file.name + '】' + errorInfo.message + '</span>';
  93. $('#' + resultId).html(hcode);
  94. let progressId = 'pl_progress_' + idName;
  95. element.progress(progressId, '0%'); //进度条复位
  96. }
  97. }
  98. // 显示按钮
  99. // let btnId = 'pl_btn_select_' + idName;
  100. // $('#' + btnId).show();
  101. });
  102. }
  103. /**
  104. * plupload所有文件上传完回调
  105. */
  106. function pluploadFuncUploadCompleteForCover(idName, up, files) {
  107. layui.use(['jquery', 'element', 'layer'], function () {
  108. let $ = layui.jquery;
  109. let element = layui.element;
  110. let layer = layui.layer;
  111. let resultId = 'pl_result_' + idName;
  112. $('#' + resultId).empty();
  113. layer.close(layer.index); // 关闭加载层,layer.index参数,自动找最新的层
  114. // 显示按钮
  115. let btnId = 'pl_btn_select_' + idName;
  116. $('#' + btnId).show();
  117. });
  118. }
  119. /**
  120. * plupload错误回调
  121. */
  122. function pluploadFuncErrorForCover(idName, up, err) {
  123. layui.use(['jquery', 'element', 'layer'], function () {
  124. let $ = layui.jquery;
  125. let element = layui.element;
  126. let layer = layui.layer;
  127. // 显示按钮
  128. let btnId = 'pl_btn_select_' + idName;
  129. $('#' + btnId).show();
  130. let resultId = 'pl_result_' + idName;
  131. let hcode = '<span class="layui-font-red">[' + err.code + '错误信息]' + err.message + '</span>';
  132. $('#' + resultId).html(hcode);
  133. layer.close(layer.index); // 关闭加载层,layer.index参数,自动找最新的层
  134. });
  135. }