utils.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. "use strict";
  2. var __defProp = Object.defineProperty;
  3. var __defProps = Object.defineProperties;
  4. var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
  5. var __getOwnPropSymbols = Object.getOwnPropertySymbols;
  6. var __hasOwnProp = Object.prototype.hasOwnProperty;
  7. var __propIsEnum = Object.prototype.propertyIsEnumerable;
  8. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  9. var __spreadValues = (a, b) => {
  10. for (var prop in b || (b = {}))
  11. if (__hasOwnProp.call(b, prop))
  12. __defNormalProp(a, prop, b[prop]);
  13. if (__getOwnPropSymbols)
  14. for (var prop of __getOwnPropSymbols(b)) {
  15. if (__propIsEnum.call(b, prop))
  16. __defNormalProp(a, prop, b[prop]);
  17. }
  18. return a;
  19. };
  20. var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
  21. var common_vendor = require("../../../common/vendor.js");
  22. var utils_request_upload_qiniuUploader = require("./qiniuUploader.js");
  23. const randomChar = function(l, url = "") {
  24. const x = "0123456789qwertyuioplkjhgfdsazxcvbnm";
  25. let tmp = "";
  26. let time = new Date();
  27. for (let i = 0; i < l; i++) {
  28. tmp += x.charAt(Math.ceil(Math.random() * 1e8) % x.length);
  29. }
  30. return "file/" + url + time.getTime() + tmp;
  31. };
  32. const chooseImage = function(data) {
  33. return new Promise((resolve, reject) => {
  34. common_vendor.index.chooseImage({
  35. count: data.count || 9,
  36. sizeType: data.sizeType || ["original", "compressed"],
  37. sourceType: data.sourceType || ["album", "camera"],
  38. success: function(res) {
  39. resolve(res.tempFiles);
  40. },
  41. fail: (err) => {
  42. reject({
  43. errMsg: err.errMsg,
  44. errCode: err.errCode,
  45. statusCode: 0
  46. });
  47. }
  48. });
  49. });
  50. };
  51. const chooseVideo = function(data) {
  52. return new Promise((resolve, reject) => {
  53. common_vendor.index.chooseVideo({
  54. sourceType: data.sourceType || ["album", "camera"],
  55. compressed: data.compressed || false,
  56. maxDuration: data.maxDuration || 60,
  57. camera: data.camera || "back",
  58. success: function(res) {
  59. let files = [{
  60. path: res.tempFilePath
  61. }];
  62. files[0].duration = res.duration;
  63. files[0].size = res.size;
  64. files[0].height = res.height;
  65. files[0].width = res.width;
  66. resolve(files);
  67. },
  68. fail: (err) => {
  69. reject({
  70. errMsg: err.errMsg,
  71. errCode: err.errCode,
  72. statusCode: 0
  73. });
  74. }
  75. });
  76. });
  77. };
  78. const qiniuUpload = function(requestInfo, getQnToken) {
  79. return new Promise((resolve, reject) => {
  80. if (Array.isArray(requestInfo.files)) {
  81. let len = requestInfo.files.length;
  82. let fileList = new Array();
  83. if (getQnToken) {
  84. getQnToken((qnRes) => {
  85. let prefixLen = qnRes.visitPrefix.length;
  86. if (qnRes.visitPrefix.charAt(prefixLen - 1) == "/") {
  87. qnRes.visitPrefix = qnRes.visitPrefix.substring(0, prefixLen - 1);
  88. }
  89. uploadFile(0);
  90. function uploadFile(i) {
  91. let item = requestInfo.files[i];
  92. let updateUrl = randomChar(10, qnRes.folderPath);
  93. let fileData = __spreadValues({
  94. fileIndex: i,
  95. files: requestInfo.files
  96. }, item);
  97. if (item.name) {
  98. fileData.name = item.name;
  99. let nameArr = item.name.split(".");
  100. updateUrl += "." + nameArr[nameArr.length - 1];
  101. }
  102. utils_request_upload_qiniuUploader.qiniuUploader.upload(item.path || item, (res) => {
  103. fileData.url = res.imageURL;
  104. requestInfo.onEachUpdate && requestInfo.onEachUpdate(__spreadValues({
  105. url: res.imageURL
  106. }, fileData));
  107. fileList.push(res.imageURL);
  108. if (len - 1 > i) {
  109. uploadFile(i + 1);
  110. } else {
  111. resolve(fileList);
  112. }
  113. }, (error) => {
  114. reject(error);
  115. }, {
  116. region: qnRes.region || "SCN",
  117. domain: qnRes.visitPrefix,
  118. key: updateUrl,
  119. uptoken: qnRes.token,
  120. uptokenURL: "UpTokenURL.com/uptoken"
  121. }, (res) => {
  122. console.log(requestInfo);
  123. requestInfo.onProgressUpdate && requestInfo.onProgressUpdate(Object.assign({}, fileData, res));
  124. });
  125. }
  126. });
  127. } else {
  128. reject({
  129. errMsg: "\u8BF7\u6DFB\u52A0\u4E03\u725B\u4E91\u56DE\u8C03\u65B9\u6CD5\uFF1AgetQnToken",
  130. statusCode: 0
  131. });
  132. }
  133. } else {
  134. reject({
  135. errMsg: "files \u5FC5\u987B\u662F\u6570\u7EC4\u7C7B\u578B",
  136. statusCode: 0
  137. });
  138. }
  139. });
  140. };
  141. const urlUpload = function(requestInfo, dataFactory) {
  142. return new Promise((resolve, reject) => {
  143. if (requestInfo.header["Content-Type"]) {
  144. delete requestInfo.header["Content-Type"];
  145. }
  146. if (requestInfo.header["content-type"]) {
  147. delete requestInfo.header["content-type"];
  148. }
  149. if (Array.isArray(requestInfo.files)) {
  150. let fileUpload = function(i) {
  151. let item = requestInfo.files[i];
  152. let fileData = __spreadValues({
  153. fileIndex: i,
  154. files: requestInfo.files
  155. }, item);
  156. let config = {
  157. url: requestInfo.url,
  158. filePath: item.path,
  159. header: requestInfo.header,
  160. name: requestInfo.name || "file",
  161. success: (response) => {
  162. if (requestInfo.isFactory && dataFactory) {
  163. dataFactory(__spreadProps(__spreadValues({}, requestInfo), {
  164. response
  165. })).then((data) => {
  166. fileList.push(data);
  167. requestInfo.onEachUpdate && requestInfo.onEachUpdate(__spreadValues({
  168. data
  169. }, fileData));
  170. if (len <= i) {
  171. resolve(fileList);
  172. } else {
  173. fileUpload(i + 1);
  174. }
  175. }, (err) => {
  176. reject(err);
  177. });
  178. } else {
  179. requestInfo.onEachUpdate && requestInfo.onEachUpdate(__spreadValues({
  180. data: response
  181. }, fileData));
  182. fileList.push(response);
  183. if (len <= i) {
  184. resolve(fileList);
  185. } else {
  186. fileUpload(i + 1);
  187. }
  188. }
  189. },
  190. fail: (err) => {
  191. reject(err);
  192. }
  193. };
  194. if (requestInfo.data) {
  195. config.formData = requestInfo.data;
  196. }
  197. const uploadTask = common_vendor.index.uploadFile(config);
  198. uploadTask.onProgressUpdate((res) => {
  199. requestInfo.onProgressUpdate && requestInfo.onProgressUpdate(Object.assign({}, fileData, res));
  200. });
  201. };
  202. const len = requestInfo.files.length - 1;
  203. let fileList = new Array();
  204. fileUpload(0);
  205. } else {
  206. reject({
  207. errMsg: "files \u5FC5\u987B\u662F\u6570\u7EC4\u7C7B\u578B",
  208. statusCode: 0
  209. });
  210. }
  211. });
  212. };
  213. exports.chooseImage = chooseImage;
  214. exports.chooseVideo = chooseVideo;
  215. exports.qiniuUpload = qiniuUpload;
  216. exports.urlUpload = urlUpload;