uploader.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. define(function () {
  2. return function (element, InitHandler, UploadedHandler, CompleteHandler) {
  3. var exts = $(element).data('type') || '*';
  4. var uptype = $(element).attr('data-uptype') || '';
  5. // 检查可以上传的文件后缀
  6. $.form.load('?s=admin/api.upload/check', {exts: exts, uptype: uptype}, 'post', function (ret, options) {
  7. options = {url: ret.data.data.url, exts: ret.data.exts, acceptMime: ret.data.mine, data: ret.data.data};
  8. if (exts.indexOf('*') > -1) delete options.exts, delete options.acceptMime;
  9. return renderUploader(options), false;
  10. }, false, false, 0);
  11. // 初始化上传组件
  12. function renderUploader(options, headers) {
  13. this.options = {
  14. proindex: 0,
  15. elem: element,
  16. headers: headers || {},
  17. multiple: $(element).attr('data-multiple') > 0,
  18. before: function () {
  19. this.proindex = $.msg.loading('上传进度 <span data-upload-progress>0%</span>');
  20. },
  21. progress: function (n) {
  22. $('[data-upload-progress]').html(n + '%');
  23. },
  24. done: function (ret) {
  25. this.multiple || $.msg.close(this.proindex);
  26. if (ret.uploaded) {
  27. if (typeof UploadedHandler === 'function') UploadedHandler(ret.url);
  28. else $('[name="' + ($(element).data('field') || 'file') + '"]').val(ret.url).trigger('change');
  29. } else {
  30. $.msg.error(ret.info || ret.error.message || '文件上传出错!');
  31. }
  32. },
  33. allDone: function () {
  34. $.msg.close(this.proindex), $(element).html($(element).data('html'));
  35. if (typeof CompleteHandler === 'function') CompleteHandler();
  36. }
  37. };
  38. layui.upload.render($.extend(this.options, options));
  39. };
  40. };
  41. });