@sadais/uploader 0.5.14 → 0.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -269,6 +269,11 @@ class SadaisUploader {
269
269
  return { successUrls, failUrls }
270
270
  }
271
271
 
272
+ async initFileSize(url, success) {
273
+ if (!success.fileInfo.size && success.fileInfo.size !== 0) {
274
+ success.fileInfo = { ...success.fileInfo, size: await this.getFileSize(url) };
275
+ }
276
+ }
272
277
  // 表单上传
273
278
  _formSubmit(resolve, reject, file) {
274
279
  console.log('表单上传', file);
@@ -306,11 +311,12 @@ class SadaisUploader {
306
311
  name: 'file',
307
312
  formData,
308
313
  timeout: timeout, // 默认10s
309
- success: (res) => {
314
+ success: async (res) => {
310
315
  const { statusCode } = res;
311
316
  const isSuccess =
312
317
  statusCode == 200 || (UPLOADER_TYPE.HUAWEI === this.options.type && statusCode == 204);
313
318
  if (isSuccess) {
319
+ await this.initFileSize(uploadedFilePath, success);
314
320
  resolve(success);
315
321
  } else {
316
322
  error.head.msg = res;
@@ -333,12 +339,13 @@ class SadaisUploader {
333
339
  const xhr = new XMLHttpRequest();
334
340
  xhr.timeout = this.options.uploadTimeOut || 10000; // 默认10s
335
341
  xhr.open('POST', apiUrl, true);
336
- xhr.onreadystatechange = () => {
342
+ xhr.onreadystatechange = async () => {
337
343
  if (xhr.readyState === XMLHttpRequest.DONE) {
338
344
  if (
339
345
  xhr.status == 200 ||
340
346
  (UPLOADER_TYPE.HUAWEI === this.options.type && xhr.status == 204)
341
347
  ) {
348
+ await this.initFileSize(uploadedFilePath, success);
342
349
  resolve(success);
343
350
  } else {
344
351
  reject(error);
@@ -370,6 +377,20 @@ class SadaisUploader {
370
377
  }
371
378
  }
372
379
 
380
+ async getFileSize(url) {
381
+ return new Promise((resolve) => {
382
+ uni.request({
383
+ url: url,
384
+ method: 'HEAD',
385
+ success: (res) => {
386
+ resolve(Number(`${res.header['Content-Length'] || 0}`));
387
+ },
388
+ fail: (_) => {
389
+ resolve(0);
390
+ }
391
+ });
392
+ })
393
+ }
373
394
  async _apiSubmit(resolve, reject, file) {
374
395
  console.log('api接口上传');
375
396
 
@@ -426,6 +447,7 @@ class SadaisUploader {
426
447
  reject(error);
427
448
  } else {
428
449
  success.data = data.url;
450
+ await this.initFileSize(data.url, success);
429
451
  resolve(success);
430
452
  }
431
453
  } catch (error) {
@@ -505,10 +527,11 @@ class SadaisUploader {
505
527
  'Pic-Operations': picOperations
506
528
  },
507
529
  timeout: this.options.uploadTimeOut || 10000, // 默认10s
508
- success: (res) => {
530
+ success: async (res) => {
509
531
  console.log('上传结果', res);
510
532
  const { statusCode } = res;
511
533
  if (statusCode == 200) {
534
+ await this.initFileSize(uploadedFilePath, success);
512
535
  resolve(success);
513
536
  } else {
514
537
  if (ossFailedApiOption) {
@@ -535,9 +558,10 @@ class SadaisUploader {
535
558
  xhr.open('PUT', apiUrl, true);
536
559
  xhr.setRequestHeader('Authorization', authorizationInfo);
537
560
  xhr.setRequestHeader('Pic-Operations', picOperations);
538
- xhr.onreadystatechange = () => {
561
+ xhr.onreadystatechange = async () => {
539
562
  if (xhr.readyState === XMLHttpRequest.DONE) {
540
563
  if (xhr.status === 200) {
564
+ await this.initFileSize(uploadedFilePath, success);
541
565
  resolve(success);
542
566
  } else {
543
567
  reject(error);
package/dist/index.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],i=!0,s=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(s)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n,r,a,o,i){try{var s=e[o](i),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,a)}function u(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){s(o,r,a,i,u,"next",e)}function u(e){s(o,r,a,i,u,"throw",e)}i(void 0)}))}}function c(e){var t,n,r,a=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);a--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new l(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function l(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return l=function(e){this.s=e,this.n=e.next},l.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new l(e)}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1e3,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",o=n;return new Promise((function(n,i){var s=function(){var c=u(regeneratorRuntime.mark((function u(){var c;return regeneratorRuntime.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return u.prev=0,u.next=3,e();case 3:return c=u.sent,u.next=6,t(c);case 6:!u.sent&&o>0?(o--,console.log(a,"重试次数减少,剩余次数:",o),setTimeout(s,r)):(console.log(a,"返回结果:",c),n(c)),u.next=13;break;case 10:u.prev=10,u.t0=u.catch(0),o>0?(o--,console.log(a,"异常重试次数减少,剩余次数:",o),setTimeout(s,r)):(console.log(a,"重试次数已用完,错误信息:",u.t0),i(u.t0));case 13:case"end":return u.stop()}}),u,null,[[0,10]])})));return function(){return c.apply(this,arguments)}}();s()}))}function f(e){return e&&e.size}function h(e){return new Promise((function(t,n){var r=new FileReader;e.name,r.readAsArrayBuffer(e),r.addEventListener("loadend",(function(e){var n=e.target.result;t(n)}),!1)}))}Object.defineProperty(exports,"__esModule",{value:!0});var d,m={ALIYUN:"ALIYUN",TXYUN:"TXYUN",HUAWEI:"HUAWEI"},g=function(e){return d||(d=new y(e)),d},y=function(){function n(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),this._init(e)}var r,o,s,l,d,g,y,b,v,x,k;return r=n,o=[{key:"_init",value:(k=u(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.params=t;case 1:case"end":return e.stop()}}),e,this)}))),function(e){return k.apply(this,arguments)})},{key:"initOptions",value:(x=u(regeneratorRuntime.mark((function e(t){var n,r,o,i,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.params||(this.params={}),!t){e.next=3;break}return e.abrupt("return",this.params=a(a({},this.params),t));case 3:if((n=this.params).type,r=n.getOptionFun,o=n.path,i=n.getAuthInfoFunc,n.isUploadWebp,n.ossFailedApiOption,this.getAuthInfoFunc=i,this.options=a({},this.params),!r){e.next=15;break}return e.next=9,this._initOptionFun();case 9:if(s=e.sent){e.next=12;break}return e.abrupt("return");case 12:(o=s.path||o)&&!o.endsWith("/")&&(s.path=o+"/"),this.options=a(a({},this.options),s);case 15:case"end":return e.stop()}}),e,this)}))),function(e){return x.apply(this,arguments)})},{key:"_initOptionFun",value:(v=u(regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",p((function(){return t.params.getOptionFun(t.params.type)}),(function(e){return e.endPoint}),5,300,"oss 初始化"));case 1:case"end":return e.stop()}}),e)}))),function(){return v.apply(this,arguments)})},{key:"_isTimeOut",value:function(){var e=this.options.timeOut-1e4;return(new Date).getTime()>e}},{key:"upload",value:(b=u(regeneratorRuntime.mark((function e(t){var n,r,a,o,i,s,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:n=Array.isArray(t)?t:[t],r=[],a=0;case 5:if(!(a<n.length)){e.next=16;break}return o=n[a],e.next=9,this.uploadFile(o);case 9:i=e.sent,s=i.data,u=i.head,r.push({index:a,url:s,ret:u.ret});case 13:a++,e.next=5;break;case 16:return e.abrupt("return",r);case 17:case"end":return e.stop()}}),e,this)}))),function(e){return b.apply(this,arguments)})},{key:"uploadFile",value:(y=u(regeneratorRuntime.mark((function e(n){var r,o,i,s,u,c,l,p=this,h=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=h.length>1&&void 0!==h[1]?h[1]:{},e.prev=1,e.next=4,uni.getNetworkType();case 4:if(o=e.sent,i=t(o,2),s=i[1],!["none","offline"].includes(s.networkType)){e.next=10;break}return uni.showToast({icon:"none",title:"网络异常,请检查网络",duration:3e3}),e.abrupt("return");case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(1),console.log(e.t0);case 15:if(this.options&&this.options.endPoint&&!this._isTimeOut()){e.next=19;break}return console.log("初始化 oss 开始"),e.next=19,this.initOptions();case 19:return console.log("sadais uploader 上传文件内容",n),n=!f(n)&&f(n.path)?n.path:n,this.options=a(a({},this.options),r),console.log("当前上传配置信息",this.options),!n.name&&n.path&&(u=n.path.startsWith("blob"),c=n.path.startsWith("data"),l=u||c?".png":n.path.substring(n.path.lastIndexOf(".")),n.name=this._guid()+l),e.abrupt("return",new Promise((function(e,t){p.options.endPoint?p.options.isUploadWebp&&m.TXYUN==p.params.type&&p._fileIsPic(n.name)?p._putSubmit(e,t,n):p._formSubmit(e,t,n):(console.log("oss 初始化失败,走接口上传"),p._apiSubmit(e,t,n))})));case 25:case"end":return e.stop()}}),e,this,[[1,12]])}))),function(e){return y.apply(this,arguments)})},{key:"uploadFiles",value:(g=u(regeneratorRuntime.mark((function e(t){var n,r,a,o,i,s,u,l,p,f,h,d=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=d.length>1&&void 0!==d[1]?d[1]:{},r=[],a=[],o=!1,i=!1,e.prev=5,u=c(t);case 7:return e.next=9,u.next();case 9:if(!(o=!(l=e.sent).done)){e.next=20;break}return p=l.value,e.next=13,this.uploadFile(p,n);case 13:f=e.sent,h=f.data,0===f.head.ret?r.push(h):a.push(h);case 17:o=!1,e.next=7;break;case 20:e.next=26;break;case 22:e.prev=22,e.t0=e.catch(5),i=!0,s=e.t0;case 26:if(e.prev=26,e.prev=27,!o||null==u.return){e.next=31;break}return e.next=31,u.return();case 31:if(e.prev=31,!i){e.next=34;break}throw s;case 34:return e.finish(31);case 35:return e.finish(26);case 36:return e.abrupt("return",{successUrls:r,failUrls:a});case 37:case"end":return e.stop()}}),e,this,[[5,22,26,36],[27,,31,35]])}))),function(e){return g.apply(this,arguments)})},{key:"_formSubmit",value:function(e,t,n){var r=this;function a(){var r=this,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e4,o=this.options.domain,i=this._buildParams(n),s=i.url,u="".concat(o).concat(o.endsWith("/")?"":"/").concat(i.key),c={data:u,head:{ret:0,msg:"success"},fileInfo:n},l={data:n.name,head:{ret:1,msg:"fail"},fileInfo:n};m.HUAWEI===this.options.type&&(delete i.name,delete i.url,delete i.success_action_status);try{uni.uploadFile({url:s,filePath:n.path,name:"file",formData:i,timeout:a,success:function(n){var a=n.statusCode;200==a||m.HUAWEI===r.options.type&&204==a?e(c):(l.head.msg=n,t(l))},fail:function(e){console.log(e),t(e)}})}catch(a){console.log("uni报错,调用XMLHttpRequest",a);var p=new FormData;Object.keys(i).forEach((function(e){p.append(e,i[e])})),p.append("file",n);var f=new XMLHttpRequest;f.timeout=this.options.uploadTimeOut||1e4,f.open("POST",s,!0),f.onreadystatechange=function(){f.readyState===XMLHttpRequest.DONE&&(200==f.status||m.HUAWEI===r.options.type&&204==f.status?e(c):t(l))},f.send(p)}}console.log("表单上传",n);try{uni.getFileInfo({filePath:n.path,success:function(e){var t=Math.round(e.size/2e3)+parseInt(r.options.uploadTimeOut||1e4);console.log("上传文件大小",e.size,t),a.call(r,t)},fail:function(e){console.log("获取文件信息失败",e),t(e)}})}catch(e){a.call(this)}}},{key:"_apiSubmit",value:(d=u(regeneratorRuntime.mark((function n(r,a,o){var i,s,u,c,l,f,h,d,m,g,y,b,v,x,k,w,O;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return c=function(){return p((function(){return uni.uploadFile({url:s.api,filePath:o.path,name:"file",timeout:u||1e4})}),(function(e){var n=t(e,2)[1]||{},r=n.errMsg;return n.data,"uploadFile:ok"===r}),5,500,"api接口上传")},console.log("api接口上传"),i=this.options,s=i.ossFailedApiOption,u=i.uploadTimeOut,l={data:"",head:{ret:0,msg:"success"},fileInfo:o},f={data:o.name,head:{ret:1,msg:"fail"},fileInfo:o},n.prev=5,n.next=8,c();case 8:h=n.sent,d=t(h,2),"object"!==e(m=d[1])&&a(f),y=(g=m||{}).errMsg,b=g.data,y&&"uploadFile:ok"===y||(f.head.msg=y,a(f)),v=JSON.parse(b),x=v.data,k=v.head,w=(k=void 0===k?{}:k).ret,O=k.msg,w!==s.successRetCode?(f.head.msg=O,a(f)):(l.data=x.url,r(l)),n.next=23;break;case 20:n.prev=20,n.t0=n.catch(5),a(n.t0);case 23:case"end":return n.stop()}}),n,this,[[5,20]])}))),function(e,t,n){return d.apply(this,arguments)})},{key:"_putSubmit",value:(l=u(regeneratorRuntime.mark((function e(t,n,r){var a,o,i,s,c,l,p,d,m,g,y,b,v,x,k,w,O,P=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("腾讯put上传"),a=this.options,o=a.domain,i=a.ossFailedApiOption,s=this._buildParams(r),c=s.url+"/"+s.key,l=JSON.stringify({is_pic_info:1,rules:[{fileid:"/"+s.key,rule:"imageMogr2/format/webp"}]}),p={httpMethodName:"PUT",resoucePath:"/"+s.key,storage:this.params.type,headerMap:{"Pic-Operations":l}},d={},e.prev=7,console.log("获取权限信息"),e.next=11,this.getAuthInfoFunc(p);case 11:if(d=e.sent,console.log("获取权限结果",d),d.content){e.next=15;break}return e.abrupt("return",this._apiSubmit(t,n,r));case 15:e.next=21;break;case 17:return e.prev=17,e.t0=e.catch(7),console.log("获取权限失败",e.t0),e.abrupt("return",this._apiSubmit(t,n,r));case 21:if(m=d?d.content:""){e.next=24;break}return e.abrupt("return",n(b));case 24:g="".concat(o).concat(o.endsWith("/")?"":"/").concat(s.key),y={data:g,head:{ret:0,msg:"success"},fileInfo:r},b={data:r.name,head:{ret:1,msg:"fail"},fileInfo:r},v=function(){var e=u(regeneratorRuntime.mark((function e(a){var o,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,o=a,!f(a)){e.next=6;break}return e.next=5,h(r);case 5:o=e.sent;case 6:console.log("上传数据",o),uni.request({url:c,method:"PUT",data:o,header:{Authorization:m,"Pic-Operations":l},timeout:P.options.uploadTimeOut||1e4,success:function(e){console.log("上传结果",e),200==e.statusCode?t(y):i?P._apiSubmit(t,n,r):(b.head.msg=e,n(b))},fail:function(e){console.log("上传失败",i),i?P._apiSubmit(t,n,r):(console.log(e),n(e))}}),e.next=19;break;case 10:e.prev=10,e.t0=e.catch(0),console.log("web环境"),(s=new XMLHttpRequest).open("PUT",c,!0),s.setRequestHeader("Authorization",m),s.setRequestHeader("Pic-Operations",l),s.onreadystatechange=function(){s.readyState===XMLHttpRequest.DONE&&(200===s.status?t(y):n(b))},s.send(a);case 19:case"end":return e.stop()}}),e,null,[[0,10]])})));return function(t){return e.apply(this,arguments)}}(),e.prev=28,console.log("微信环境"),x=uni.getFileSystemManager(),k=x.readFileSync(r.path),v(k),e.next=48;break;case 35:if(e.prev=35,e.t1=e.catch(28),console.log("H5环境"),!r.type){e.next=42;break}v(r),e.next=48;break;case 42:return e.next=44,fetch(r.path).then((function(e){return e.blob()}));case 44:w=e.sent,(O=new FileReader).onload=function(){v(O.result)},O.readAsArrayBuffer(w);case 48:case"end":return e.stop()}}),e,this,[[7,17],[28,35]])}))),function(e,t,n){return l.apply(this,arguments)})},{key:"_fileIsPic",value:function(e){var t=e.substring(e.lastIndexOf(".")+1);return["png","jpg","jpeg","gif","bmp","webp","avif","heif","tpg","psd"].includes(t.toLowerCase())}},{key:"_buildParams",value:function(e){var t=this.options,n=t.type;e.name||(e.name=this._guid()+".png");var r={name:e.name,policy:t.policy,success_action_status:"200",key:this._getUploadFilePath(e.name)},a=t.endPoint.replace("https://","").replace("http://","");return m.TXYUN===n?(r["q-ak"]=t.accessKeyId,r["q-signature"]=t.signature,r["q-sign-algorithm"]="sha1",r["q-key-time"]=t.param["q-sign-time"],r.url="https://".concat(t.bucketName,".cos.").concat(a,".myqcloud.com")):m.HUAWEI===n?(r.AccessKeyId=t.accessKeyId,r.signature=t.signature,r.url="https://".concat(t.bucketName,".").concat(a),r.policy=t.policy):(r.signature=t.signature,r.OSSAccessKeyId=t.accessKeyId,r.bucket=t.bucketName,r.url="https://".concat(t.bucketName,".").concat(a)),r}},{key:"_getUploadFilePath",value:function(e){this.params.type;var t=this.options,n=t.useOriginalName,r=t.path,a=e.lastIndexOf("."),o=e.substring(0,a),i=e.substring(a+1),s=n?"/".concat(o):"";return"".concat(r).concat(this._getNowDate(),"/").concat(this._guid()).concat(s,".").concat(i)}},{key:"_getNowDate",value:function(){var e=new Date,t=e.getFullYear(),n=e.getMonth()+1,r=e.getDate();return n<10&&(n="0".concat(n)),r<10&&(r="0".concat(r)),"".concat(t).concat(n).concat(r)}},{key:"_guid",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}}],o&&i(r.prototype,o),s&&i(r,s),Object.defineProperty(r,"prototype",{writable:!1}),n}();exports.DEFAULT_OPTIONS={},exports.SadaisUploader=y,exports.UPLOADER_TYPE=m,exports.UploaderInstance=g;
1
+ "use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,i=[],o=!0,s=!1;try{for(n=n.call(e);!(o=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);o=!0);}catch(e){s=!0,a=e}finally{try{o||null==n.return||n.return()}finally{if(s)throw a}}return i}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n,r,a,i,o){try{var s=e[i](o),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,a)}function u(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function o(e){s(i,r,a,o,u,"next",e)}function u(e){s(i,r,a,o,u,"throw",e)}o(void 0)}))}}function c(e){var t,n,r,a=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);a--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new p(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function p(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return p=function(e){this.s=e,this.n=e.next},p.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new p(e)}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1e3,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",i=n;return new Promise((function(n,o){var s=function(){var c=u(regeneratorRuntime.mark((function u(){var c;return regeneratorRuntime.wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return u.prev=0,u.next=3,e();case 3:return c=u.sent,u.next=6,t(c);case 6:!u.sent&&i>0?(i--,console.log(a,"重试次数减少,剩余次数:",i),setTimeout(s,r)):(console.log(a,"返回结果:",c),n(c)),u.next=13;break;case 10:u.prev=10,u.t0=u.catch(0),i>0?(i--,console.log(a,"异常重试次数减少,剩余次数:",i),setTimeout(s,r)):(console.log(a,"重试次数已用完,错误信息:",u.t0),o(u.t0));case 13:case"end":return u.stop()}}),u,null,[[0,10]])})));return function(){return c.apply(this,arguments)}}();s()}))}function f(e){return e&&e.size}function h(e){return new Promise((function(t,n){var r=new FileReader;e.name,r.readAsArrayBuffer(e),r.addEventListener("loadend",(function(e){var n=e.target.result;t(n)}),!1)}))}Object.defineProperty(exports,"__esModule",{value:!0});var m,d={ALIYUN:"ALIYUN",TXYUN:"TXYUN",HUAWEI:"HUAWEI"},g=function(e){return m||(m=new y(e)),m},y=function(){function n(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),this._init(e)}var r,i,s,p,m,g,y,b,v,x,k,w,O;return r=n,i=[{key:"_init",value:(O=u(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.params=t;case 1:case"end":return e.stop()}}),e,this)}))),function(e){return O.apply(this,arguments)})},{key:"initOptions",value:(w=u(regeneratorRuntime.mark((function e(t){var n,r,i,o,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.params||(this.params={}),!t){e.next=3;break}return e.abrupt("return",this.params=a(a({},this.params),t));case 3:if((n=this.params).type,r=n.getOptionFun,i=n.path,o=n.getAuthInfoFunc,n.isUploadWebp,n.ossFailedApiOption,this.getAuthInfoFunc=o,this.options=a({},this.params),!r){e.next=15;break}return e.next=9,this._initOptionFun();case 9:if(s=e.sent){e.next=12;break}return e.abrupt("return");case 12:(i=s.path||i)&&!i.endsWith("/")&&(s.path=i+"/"),this.options=a(a({},this.options),s);case 15:case"end":return e.stop()}}),e,this)}))),function(e){return w.apply(this,arguments)})},{key:"_initOptionFun",value:(k=u(regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",l((function(){return t.params.getOptionFun(t.params.type)}),(function(e){return e.endPoint}),5,300,"oss 初始化"));case 1:case"end":return e.stop()}}),e)}))),function(){return k.apply(this,arguments)})},{key:"_isTimeOut",value:function(){var e=this.options.timeOut-1e4;return(new Date).getTime()>e}},{key:"upload",value:(x=u(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:n=Array.isArray(t)?t:[t],r=[],a=0;case 5:if(!(a<n.length)){e.next=16;break}return i=n[a],e.next=9,this.uploadFile(i);case 9:o=e.sent,s=o.data,u=o.head,r.push({index:a,url:s,ret:u.ret});case 13:a++,e.next=5;break;case 16:return e.abrupt("return",r);case 17:case"end":return e.stop()}}),e,this)}))),function(e){return x.apply(this,arguments)})},{key:"uploadFile",value:(v=u(regeneratorRuntime.mark((function e(n){var r,i,o,s,u,c,p,l=this,h=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=h.length>1&&void 0!==h[1]?h[1]:{},e.prev=1,e.next=4,uni.getNetworkType();case 4:if(i=e.sent,o=t(i,2),s=o[1],!["none","offline"].includes(s.networkType)){e.next=10;break}return uni.showToast({icon:"none",title:"网络异常,请检查网络",duration:3e3}),e.abrupt("return");case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(1),console.log(e.t0);case 15:if(this.options&&this.options.endPoint&&!this._isTimeOut()){e.next=19;break}return console.log("初始化 oss 开始"),e.next=19,this.initOptions();case 19:return console.log("sadais uploader 上传文件内容",n),n=!f(n)&&f(n.path)?n.path:n,this.options=a(a({},this.options),r),console.log("当前上传配置信息",this.options),!n.name&&n.path&&(u=n.path.startsWith("blob"),c=n.path.startsWith("data"),p=u||c?".png":n.path.substring(n.path.lastIndexOf(".")),n.name=this._guid()+p),e.abrupt("return",new Promise((function(e,t){l.options.endPoint?l.options.isUploadWebp&&d.TXYUN==l.params.type&&l._fileIsPic(n.name)?l._putSubmit(e,t,n):l._formSubmit(e,t,n):(console.log("oss 初始化失败,走接口上传"),l._apiSubmit(e,t,n))})));case 25:case"end":return e.stop()}}),e,this,[[1,12]])}))),function(e){return v.apply(this,arguments)})},{key:"uploadFiles",value:(b=u(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,u,p,l,f,h,m=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=m.length>1&&void 0!==m[1]?m[1]:{},r=[],a=[],i=!1,o=!1,e.prev=5,u=c(t);case 7:return e.next=9,u.next();case 9:if(!(i=!(p=e.sent).done)){e.next=20;break}return l=p.value,e.next=13,this.uploadFile(l,n);case 13:f=e.sent,h=f.data,0===f.head.ret?r.push(h):a.push(h);case 17:i=!1,e.next=7;break;case 20:e.next=26;break;case 22:e.prev=22,e.t0=e.catch(5),o=!0,s=e.t0;case 26:if(e.prev=26,e.prev=27,!i||null==u.return){e.next=31;break}return e.next=31,u.return();case 31:if(e.prev=31,!o){e.next=34;break}throw s;case 34:return e.finish(31);case 35:return e.finish(26);case 36:return e.abrupt("return",{successUrls:r,failUrls:a});case 37:case"end":return e.stop()}}),e,this,[[5,22,26,36],[27,,31,35]])}))),function(e){return b.apply(this,arguments)})},{key:"initFileSize",value:(y=u(regeneratorRuntime.mark((function e(t,n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.fileInfo.size||0===n.fileInfo.size){e.next=9;break}return e.t0=a,e.t1=a({},n.fileInfo),e.t2={},e.next=6,this.getFileSize(t);case 6:e.t3=e.sent,e.t4={size:e.t3},n.fileInfo=(0,e.t0)(e.t1,e.t2,e.t4);case 9:case"end":return e.stop()}}),e,this)}))),function(e,t){return y.apply(this,arguments)})},{key:"_formSubmit",value:function(e,t,n){var r=this;function a(){var r,a=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e4,o=this.options.domain,s=this._buildParams(n),c=s.url,p="".concat(o).concat(o.endsWith("/")?"":"/").concat(s.key),l={data:p,head:{ret:0,msg:"success"},fileInfo:n},f={data:n.name,head:{ret:1,msg:"fail"},fileInfo:n};d.HUAWEI===this.options.type&&(delete s.name,delete s.url,delete s.success_action_status);try{uni.uploadFile({url:c,filePath:n.path,name:"file",formData:s,timeout:i,success:(r=u(regeneratorRuntime.mark((function n(r){var i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200!=(i=r.statusCode)&&(d.HUAWEI!==a.options.type||204!=i)){n.next=8;break}return n.next=5,a.initFileSize(p,l);case 5:e(l),n.next=10;break;case 8:f.head.msg=r,t(f);case 10:case"end":return n.stop()}}),n)}))),function(e){return r.apply(this,arguments)}),fail:function(e){console.log(e),t(e)}})}catch(r){console.log("uni报错,调用XMLHttpRequest",r);var h=new FormData;Object.keys(s).forEach((function(e){h.append(e,s[e])})),h.append("file",n);var m=new XMLHttpRequest;m.timeout=this.options.uploadTimeOut||1e4,m.open("POST",c,!0),m.onreadystatechange=u(regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(m.readyState!==XMLHttpRequest.DONE){n.next=8;break}if(200!=m.status&&(d.HUAWEI!==a.options.type||204!=m.status)){n.next=7;break}return n.next=4,a.initFileSize(p,l);case 4:e(l),n.next=8;break;case 7:t(f);case 8:case"end":return n.stop()}}),n)}))),m.send(h)}}console.log("表单上传",n);try{uni.getFileInfo({filePath:n.path,success:function(e){var t=Math.round(e.size/2e3)+parseInt(r.options.uploadTimeOut||1e4);console.log("上传文件大小",e.size,t),a.call(r,t)},fail:function(e){console.log("获取文件信息失败",e),t(e)}})}catch(e){a.call(this)}}},{key:"getFileSize",value:(g=u(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e){uni.request({url:t,method:"HEAD",success:function(t){e(Number("".concat(t.header["Content-Length"]||0)))},fail:function(t){e(0)}})})));case 1:case"end":return e.stop()}}),e)}))),function(e){return g.apply(this,arguments)})},{key:"_apiSubmit",value:(m=u(regeneratorRuntime.mark((function n(r,a,i){var o,s,u,c,p,f,h,m,d,g,y,b,v,x,k,w,O;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return c=function(){return l((function(){return uni.uploadFile({url:s.api,filePath:i.path,name:"file",timeout:u||1e4})}),(function(e){var n=t(e,2)[1]||{},r=n.errMsg;return n.data,"uploadFile:ok"===r}),5,500,"api接口上传")},console.log("api接口上传"),o=this.options,s=o.ossFailedApiOption,u=o.uploadTimeOut,p={data:"",head:{ret:0,msg:"success"},fileInfo:i},f={data:i.name,head:{ret:1,msg:"fail"},fileInfo:i},n.prev=5,n.next=8,c();case 8:if(h=n.sent,m=t(h,2),"object"!==e(d=m[1])&&a(f),y=(g=d||{}).errMsg,b=g.data,y&&"uploadFile:ok"===y||(f.head.msg=y,a(f)),v=JSON.parse(b),x=v.data,k=v.head,w=(k=void 0===k?{}:k).ret,O=k.msg,w===s.successRetCode){n.next=22;break}f.head.msg=O,a(f),n.next=26;break;case 22:return p.data=x.url,n.next=25,this.initFileSize(x.url,p);case 25:r(p);case 26:n.next=31;break;case 28:n.prev=28,n.t0=n.catch(5),a(n.t0);case 31:case"end":return n.stop()}}),n,this,[[5,28]])}))),function(e,t,n){return m.apply(this,arguments)})},{key:"_putSubmit",value:(p=u(regeneratorRuntime.mark((function e(t,n,r){var a,i,o,s,c,p,l,m,d,g,y,b,v,x,k,w,O,P=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("腾讯put上传"),a=this.options,i=a.domain,o=a.ossFailedApiOption,s=this._buildParams(r),c=s.url+"/"+s.key,p=JSON.stringify({is_pic_info:1,rules:[{fileid:"/"+s.key,rule:"imageMogr2/format/webp"}]}),l={httpMethodName:"PUT",resoucePath:"/"+s.key,storage:this.params.type,headerMap:{"Pic-Operations":p}},m={},e.prev=7,console.log("获取权限信息"),e.next=11,this.getAuthInfoFunc(l);case 11:if(m=e.sent,console.log("获取权限结果",m),m.content){e.next=15;break}return e.abrupt("return",this._apiSubmit(t,n,r));case 15:e.next=21;break;case 17:return e.prev=17,e.t0=e.catch(7),console.log("获取权限失败",e.t0),e.abrupt("return",this._apiSubmit(t,n,r));case 21:if(d=m?m.content:""){e.next=24;break}return e.abrupt("return",n(b));case 24:g="".concat(i).concat(i.endsWith("/")?"":"/").concat(s.key),y={data:g,head:{ret:0,msg:"success"},fileInfo:r},b={data:r.name,head:{ret:1,msg:"fail"},fileInfo:r},v=function(){var e=u(regeneratorRuntime.mark((function e(a){var i,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,i=a,!f(a)){e.next=6;break}return e.next=5,h(r);case 5:i=e.sent;case 6:console.log("上传数据",i),uni.request({url:c,method:"PUT",data:i,header:{Authorization:d,"Pic-Operations":p},timeout:P.options.uploadTimeOut||1e4,success:function(){var e=u(regeneratorRuntime.mark((function e(a){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(console.log("上传结果",a),200!=a.statusCode){e.next=8;break}return e.next=5,P.initFileSize(g,y);case 5:t(y),e.next=9;break;case 8:o?P._apiSubmit(t,n,r):(b.head.msg=a,n(b));case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),fail:function(e){console.log("上传失败",o),o?P._apiSubmit(t,n,r):(console.log(e),n(e))}}),e.next=19;break;case 10:e.prev=10,e.t0=e.catch(0),console.log("web环境"),(s=new XMLHttpRequest).open("PUT",c,!0),s.setRequestHeader("Authorization",d),s.setRequestHeader("Pic-Operations",p),s.onreadystatechange=u(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s.readyState!==XMLHttpRequest.DONE){e.next=8;break}if(200!==s.status){e.next=7;break}return e.next=4,P.initFileSize(g,y);case 4:t(y),e.next=8;break;case 7:n(b);case 8:case"end":return e.stop()}}),e)}))),s.send(a);case 19:case"end":return e.stop()}}),e,null,[[0,10]])})));return function(t){return e.apply(this,arguments)}}(),e.prev=28,console.log("微信环境"),x=uni.getFileSystemManager(),k=x.readFileSync(r.path),v(k),e.next=48;break;case 35:if(e.prev=35,e.t1=e.catch(28),console.log("H5环境"),!r.type){e.next=42;break}v(r),e.next=48;break;case 42:return e.next=44,fetch(r.path).then((function(e){return e.blob()}));case 44:w=e.sent,(O=new FileReader).onload=function(){v(O.result)},O.readAsArrayBuffer(w);case 48:case"end":return e.stop()}}),e,this,[[7,17],[28,35]])}))),function(e,t,n){return p.apply(this,arguments)})},{key:"_fileIsPic",value:function(e){var t=e.substring(e.lastIndexOf(".")+1);return["png","jpg","jpeg","gif","bmp","webp","avif","heif","tpg","psd"].includes(t.toLowerCase())}},{key:"_buildParams",value:function(e){var t=this.options,n=t.type;e.name||(e.name=this._guid()+".png");var r={name:e.name,policy:t.policy,success_action_status:"200",key:this._getUploadFilePath(e.name)},a=t.endPoint.replace("https://","").replace("http://","");return d.TXYUN===n?(r["q-ak"]=t.accessKeyId,r["q-signature"]=t.signature,r["q-sign-algorithm"]="sha1",r["q-key-time"]=t.param["q-sign-time"],r.url="https://".concat(t.bucketName,".cos.").concat(a,".myqcloud.com")):d.HUAWEI===n?(r.AccessKeyId=t.accessKeyId,r.signature=t.signature,r.url="https://".concat(t.bucketName,".").concat(a),r.policy=t.policy):(r.signature=t.signature,r.OSSAccessKeyId=t.accessKeyId,r.bucket=t.bucketName,r.url="https://".concat(t.bucketName,".").concat(a)),r}},{key:"_getUploadFilePath",value:function(e){this.params.type;var t=this.options,n=t.useOriginalName,r=t.path,a=e.lastIndexOf("."),i=e.substring(0,a),o=e.substring(a+1),s=n?"/".concat(i):"";return"".concat(r).concat(this._getNowDate(),"/").concat(this._guid()).concat(s,".").concat(o)}},{key:"_getNowDate",value:function(){var e=new Date,t=e.getFullYear(),n=e.getMonth()+1,r=e.getDate();return n<10&&(n="0".concat(n)),r<10&&(r="0".concat(r)),"".concat(t).concat(n).concat(r)}},{key:"_guid",value:function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}}],i&&o(r.prototype,i),s&&o(r,s),Object.defineProperty(r,"prototype",{writable:!1}),n}();exports.DEFAULT_OPTIONS={},exports.SadaisUploader=y,exports.UPLOADER_TYPE=d,exports.UploaderInstance=g;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sadais/uploader",
3
- "version": "0.5.14",
3
+ "version": "0.5.15",
4
4
  "main": "dist/index.min.js",
5
5
  "module": "dist/index.es.js",
6
6
  "keywords": [