@sadais/uploader 0.5.13 → 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);
@@ -282,11 +287,13 @@ class SadaisUploader {
282
287
  const uploadedFilePath = `${domain}${domain.endsWith('/') ? '' : '/'}${formData.key}`;
283
288
  const success = {
284
289
  data: uploadedFilePath,
285
- head: { ret: 0, msg: 'success' }
290
+ head: { ret: 0, msg: 'success' },
291
+ fileInfo: file,
286
292
  };
287
293
  const error = {
288
294
  data: file.name,
289
- head: { ret: 1, msg: 'fail' }
295
+ head: { ret: 1, msg: 'fail' },
296
+ fileInfo: file,
290
297
  };
291
298
 
292
299
  // 华为云需删除无用参数
@@ -304,11 +311,12 @@ class SadaisUploader {
304
311
  name: 'file',
305
312
  formData,
306
313
  timeout: timeout, // 默认10s
307
- success: (res) => {
314
+ success: async (res) => {
308
315
  const { statusCode } = res;
309
316
  const isSuccess =
310
317
  statusCode == 200 || (UPLOADER_TYPE.HUAWEI === this.options.type && statusCode == 204);
311
318
  if (isSuccess) {
319
+ await this.initFileSize(uploadedFilePath, success);
312
320
  resolve(success);
313
321
  } else {
314
322
  error.head.msg = res;
@@ -331,12 +339,13 @@ class SadaisUploader {
331
339
  const xhr = new XMLHttpRequest();
332
340
  xhr.timeout = this.options.uploadTimeOut || 10000; // 默认10s
333
341
  xhr.open('POST', apiUrl, true);
334
- xhr.onreadystatechange = () => {
342
+ xhr.onreadystatechange = async () => {
335
343
  if (xhr.readyState === XMLHttpRequest.DONE) {
336
344
  if (
337
345
  xhr.status == 200 ||
338
346
  (UPLOADER_TYPE.HUAWEI === this.options.type && xhr.status == 204)
339
347
  ) {
348
+ await this.initFileSize(uploadedFilePath, success);
340
349
  resolve(success);
341
350
  } else {
342
351
  reject(error);
@@ -368,6 +377,20 @@ class SadaisUploader {
368
377
  }
369
378
  }
370
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
+ }
371
394
  async _apiSubmit(resolve, reject, file) {
372
395
  console.log('api接口上传');
373
396
 
@@ -396,11 +419,13 @@ class SadaisUploader {
396
419
 
397
420
  const success = {
398
421
  data: '',
399
- head: { ret: 0, msg: 'success' }
422
+ head: { ret: 0, msg: 'success' },
423
+ fileInfo: file,
400
424
  };
401
425
  const error = {
402
426
  data: file.name,
403
- head: { ret: 1, msg: 'fail' }
427
+ head: { ret: 1, msg: 'fail' },
428
+ fileInfo: file,
404
429
  };
405
430
 
406
431
  try {
@@ -422,6 +447,7 @@ class SadaisUploader {
422
447
  reject(error);
423
448
  } else {
424
449
  success.data = data.url;
450
+ await this.initFileSize(data.url, success);
425
451
  resolve(success);
426
452
  }
427
453
  } catch (error) {
@@ -474,11 +500,13 @@ class SadaisUploader {
474
500
  const uploadedFilePath = `${domain}${domain.endsWith('/') ? '' : '/'}${formData.key}`;
475
501
  const success = {
476
502
  data: uploadedFilePath,
477
- head: { ret: 0, msg: 'success' }
503
+ head: { ret: 0, msg: 'success' },
504
+ fileInfo: file,
478
505
  };
479
506
  const error = {
480
507
  data: file.name,
481
- head: { ret: 1, msg: 'fail' }
508
+ head: { ret: 1, msg: 'fail' },
509
+ fileInfo: file,
482
510
  };
483
511
 
484
512
  const uploadFunc = async (data) => {
@@ -499,10 +527,11 @@ class SadaisUploader {
499
527
  'Pic-Operations': picOperations
500
528
  },
501
529
  timeout: this.options.uploadTimeOut || 10000, // 默认10s
502
- success: (res) => {
530
+ success: async (res) => {
503
531
  console.log('上传结果', res);
504
532
  const { statusCode } = res;
505
533
  if (statusCode == 200) {
534
+ await this.initFileSize(uploadedFilePath, success);
506
535
  resolve(success);
507
536
  } else {
508
537
  if (ossFailedApiOption) {
@@ -529,9 +558,10 @@ class SadaisUploader {
529
558
  xhr.open('PUT', apiUrl, true);
530
559
  xhr.setRequestHeader('Authorization', authorizationInfo);
531
560
  xhr.setRequestHeader('Pic-Operations', picOperations);
532
- xhr.onreadystatechange = () => {
561
+ xhr.onreadystatechange = async () => {
533
562
  if (xhr.readyState === XMLHttpRequest.DONE) {
534
563
  if (xhr.status === 200) {
564
+ await this.initFileSize(uploadedFilePath, success);
535
565
  resolve(success);
536
566
  } else {
537
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 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]:"",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,p,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",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 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,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(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"),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&&m.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 y.apply(this,arguments)})},{key:"uploadFiles",value:(g=u(regeneratorRuntime.mark((function e(t){var n,r,a,o,i,s,u,p,l,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=!(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: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"}},p={data:n.name,head:{ret:1,msg:"fail"}};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):(p.head.msg=n,t(p))},fail:function(e){console.log(e),t(e)}})}catch(a){console.log("uni报错,调用XMLHttpRequest",a);var l=new FormData;Object.keys(i).forEach((function(e){l.append(e,i[e])})),l.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(p))},f.send(l)}}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,p,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 l((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,p={data:"",head:{ret:0,msg:"success"}},f={data:o.name,head:{ret:1,msg:"fail"}},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)):(p.data=x.url,r(p)),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:(p=u(regeneratorRuntime.mark((function e(t,n,r){var a,o,i,s,c,p,l,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,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}},d={},e.prev=7,console.log("获取权限信息"),e.next=11,this.getAuthInfoFunc(l);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"}},b={data:r.name,head:{ret:1,msg:"fail"}},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":p},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",p),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 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 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.13",
3
+ "version": "0.5.15",
4
4
  "main": "dist/index.min.js",
5
5
  "module": "dist/index.es.js",
6
6
  "keywords": [