packageParser.js 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. var packageParser = function () {
  2. return function () {
  3. this.init = function (c) {
  4. var a = {};
  5. var c = $.extend({
  6. singleAllow: 314572800,
  7. openLargeAppUpload: 0,
  8. qndomain: "",
  9. gettoken: "/qiniuoss/getToken",
  10. flash_swf_url: "/static/default/images/Moxie.swf",
  11. silverlight_xap_url: "/static/default/images/Moxie.xap",
  12. autoClickUploadStart: 0,
  13. mime_types: in_sign_type != 0 ? [{title: "ipa files", extensions: "ipa"}] : [
  14. {title: "app files", extensions: "apk"},
  15. {title: "ipa files", extensions: "ipa"},
  16. {title: "mobileconfig files", extensions: "mobileconfig"}
  17. ],
  18. postField: {},
  19. upload: "",
  20. saveCallback: function () {
  21. },
  22. parseCallback: function () {
  23. }
  24. }, c);
  25. var config = {
  26. runtimes: 'html5,flash,silverlight,html4',
  27. browse_button: "uploadstart",
  28. container: "container",
  29. flash_swf_url: c.flash_swf_url,
  30. silverlight_xap_url: c.silverlight_xap_url,
  31. unique_names: !0,
  32. multi_selection: !1,
  33. max_retries: 3,
  34. dragdrop: !0,
  35. drop_element: "container",
  36. // chunk_size: c.singleAllow||'0',
  37. filters: {
  38. max_file_size: "5000mb",
  39. prevent_duplicates: !0,
  40. mime_types: c.mime_types
  41. },
  42. init: {
  43. PostInit: function (u, a) {
  44. console.log('PostInit', u, a);
  45. 0 != c.autoClickUploadStart && (console.log("autoupload"), $("#uploadstart").click())
  46. console.log('PostInit');
  47. },
  48. FilesAdded: function (u, f) {
  49. console.log('FilesAdded', u, f);
  50. plupload.each(f, function (i) {
  51. if (i.name && i.name.indexOf('mobileconfig') > -1) {
  52. a.ext = 'mobileconfig';
  53. u.start()
  54. } else {
  55. new AppInfoParser(i.getNative()).parse().then(n => {
  56. a.icon = n.icon, a.fileSize = i.size, a.originalName = i.name, n.package ? (a.appName = "string" == typeof n.application.label ? n.application.label : n.application.label[0], a.version = n.versionName, a.versionCode = n.versionCode, a.packageName = n.package, a.ext = "apk", a.minSdkVersion = n.usesSdk.minSdkVersion) : (a.appName = n.CFBundleDisplayName ? n.CFBundleDisplayName : n.CFBundleName, a.version = n.CFBundleShortVersionString, a.versionCode = n.CFBundleVersion, a.packageName = n.CFBundleIdentifier, a.ext = "ipa", a.minSdkVersion = n.MinimumOSVersion, a.teamName = n.mobileProvision.TeamName, a.udids = "", a.teamId = n.mobileProvision.TeamIdentifier, n.mobileProvision.ProvisionsAllDevices ? a.teamType = 1 : n.mobileProvision.ProvisionedDevices ? (n.mobileProvision.Entitlements["get-task-allow"] ? a.teamType = 2 : a.teamType = 3, a.udids = n.mobileProvision.ProvisionedDevices) : a.teamType = 4), c.parseCallback(i, a), $(".upload-app-icon").find("img").attr("src", a.icon), $("#upload-app-name").text(a.appName), u.start()
  57. }).catch(e => {
  58. alert(e, function () {
  59. try {
  60. u.splice(0, 1)
  61. } catch (e) {
  62. }
  63. })
  64. })
  65. }
  66. })
  67. console.log('FilesAdded');
  68. },
  69. BeforeUpload: function (u, f) {
  70. console.log('BeforeUpload', u, f);
  71. if (config.multipart_params) {
  72. //api-sign
  73. config.multipart_params.build_id = a.packageName;
  74. config.multipart_params.site_uid = '1';
  75. config.multipart_params.appName = a.appName;
  76. config.multipart_params.version = a.version;
  77. console.log('-----------', a, '-----------');
  78. //
  79. config.multipart_params.key = f.id + '.' + a.ext;
  80. u.setOption({multipart_params: config.multipart_params});
  81. }
  82. // u.setOption({chunk_size: 4000000});
  83. $(".tolsize").html("<span class='process100' style='width: auto;font-size: 14px;'></span> / " + (f.size / 1024 / 1024).toFixed(2) + "MB");
  84. $("#upprocess").show();
  85. $("#upbtn").hide()
  86. console.log('BeforeUpload');
  87. },
  88. UploadProgress: function (u, f) {
  89. console.log('UploadProgress', u, f);
  90. $(".progress-bar").css("width", f.percent + "%"), $(".process100").html(f.percent + "%"), $(".moxie-shim").hide()
  91. console.log('UploadProgress');
  92. },
  93. FileUploaded: function (u, f, r) {
  94. console.log('FileUploaded', u, f, r);
  95. var t = u.getOption("domain");
  96. s = JSON.parse(r.response) || config.multipart_params;
  97. console.log(s);
  98. if (!s || !s.key && !s.data) {
  99. return alert('上传失败');
  100. }
  101. a = Object.assign(a, c.postField);
  102. a.apkName = s.key || s.data.apkName;
  103. a.downLink = t + s.key;
  104. if (s.data) {
  105. a.apkName = s.data.apkName;
  106. a.api_aid = s.data.aid;
  107. }
  108. a.remote = c.remote;
  109. if (a.apkName && a.apkName.indexOf('mobileconfig') > -1) {
  110. console.log(a)
  111. console.log(c.upload), $.post('/upload/index/mobileconfig', a, c.saveCallback, "json")
  112. } else {
  113. console.log(a), $.post(c.upload, a, c.saveCallback, "json")
  114. }
  115. console.log('FileUploaded');
  116. },
  117. Error: function (u, e, f) {
  118. console.log('Error', u, e, f);
  119. console.log('Error');
  120. message = {'-600': '文件超过限定尺寸','-601': '文件类型不支持'}
  121. return alert(message[e.code] || e.message), !1
  122. },
  123. UploadComplete: function (u, f) {
  124. console.log('UploadComplete', u, f);
  125. console.log('UploadComplete');
  126. },
  127. Key: function (e, i) {
  128. return i.name
  129. }
  130. }
  131. };
  132. if (c.remote == 1) {//七牛
  133. $.get(c.gettoken, {}, function (i) {
  134. config.chunk_size = c.singleAllow || '0';
  135. Object.assign(config, {
  136. uptoken: i,
  137. save_key: !1,
  138. domain: c.qndomain,
  139. get_new_uptoken: !1,
  140. auto_start: !1
  141. });
  142. uploader = Qiniu.uploader(config);
  143. });
  144. } else if (c.remote == 2) {//阿里
  145. $.post('/aliyunoss/signature', {}, function (ret) {
  146. console.log(ret);
  147. if (ret.data) {
  148. Object.assign(config, {
  149. url: ret.data.domain,
  150. multipart_params: {
  151. 'key': '',
  152. 'OSSAccessKeyId': ret.data.AccessKeyId,
  153. 'policy': ret.data.policy,
  154. 'signature': ret.data.signature,
  155. 'success_action_status': '200', //让服务端返回200,不然,默认会返回204
  156. }
  157. });
  158. uploader = new plupload.Uploader(config);
  159. uploader.init();
  160. }
  161. }, 'json');
  162. } else {
  163. config.url = '/upload/index';
  164. if (in_sign_type == 1 && IN_SIGNMETHOD == 1) {
  165. config.url = IN_API + 'open/apps/create';
  166. config.multipart_params = {secret: IN_SECRET}
  167. }
  168. uploader = new plupload.Uploader(config);
  169. uploader.init();
  170. }
  171. $("#changest").click(function () {
  172. $(this).hasClass("pause") ? (uploader.start(), $(this).removeClass("pause"), $(this).text("暂停上传")) : ($(this).addClass("pause"), $(this).text("恢复上传"), uploader.stop())
  173. })
  174. }
  175. }
  176. }();