v1.2.1版本,优化调整了很多,整改验收阶段新加字段
This commit is contained in:
1
unpackage/dist/build/mp-weixin/utils/upload.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/utils/upload.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";const e=require("../common/vendor.js"),t=require("../request/request.js"),r=require("../request/api.js"),i=require("./watermark.js");async function n(t){const i=function(e){var t;if(!e)return"";const r=String(e).split("?")[0],i=(null==(t=r.split(".").pop())?void 0:t.toLowerCase())||"";return!i||i.length>8||!1===r.endsWith(i)?"jpg":i}(t),n=await function(t){return new Promise((r=>{e.index.getFileInfo({filePath:t,digestAlgorithm:"md5",success:e=>r((e.digest||"").toLowerCase()),fail:e=>{console.warn("getFileMd5 fail, use empty:",e),r("")}})}))}(t);return function(e){if(!e)throw new Error("七牛凭证为空");const t=e.token||e.uploadToken||e.uptoken,r=e.key||e.fileKey||e.objectKey,i=(e.uploadUrl||e.uploadHost||e.host||"https://upload.qiniup.com").replace(/\/$/,""),n=String(e.url||e.fileUrl||e.fullUrl||"").trim();let a=(e.domain||e.cdnDomain||"").replace(/\/$/,"");if(!a&&n){const e=n.match(/^(https?:\/\/[^/]+)/i);e&&(a=e[1])}a&&!a.startsWith("http")&&(a=`https://${a}`);if(!t||!r)throw new Error("七牛凭证缺少 token 或 key");return{token:t,key:r,uploadUrl:i,cdnOrigin:a,presetUrl:n}}((await r.getQiniuUploadToken({fileMd5:n,suffix:i})).data)}function a(e,t){if(e.presetUrl)return e.presetUrl;let r=e.key;if(t)try{const e="string"==typeof t?JSON.parse(t):t;(null==e?void 0:e.key)&&(r=e.key)}catch(i){}return e.cdnOrigin&&r?`${e.cdnOrigin}/${String(r).replace(/^\//,"")}`:function(e,t){if(!e||!t)return"";const r=String(t).replace(/^\//,""),i=String(e).replace(/\/$/,"");if(i.startsWith("http://")||i.startsWith("https://"))return`${i}/${r}`;return`https://${i}/${r}`}(e.cdnOrigin,r)}async function s(t,r={}){let i=t;r.beforeUpload&&(i=await r.beforeUpload(t));const s=await n(i),{token:o,key:l,uploadUrl:u}=s;return new Promise(((t,r)=>{e.index.uploadFile({url:u,filePath:i,name:"file",formData:{token:o,key:l},success:e=>{if(e.statusCode&&e.statusCode>=400)return void r(new Error(`七牛上传失败(${e.statusCode})`));const i=a(s,e.data);if(!i)return void r(new Error("无法解析上传后的文件地址,请检查后端 url 或 CDN 配置"));let n=l;try{const t="string"==typeof e.data?JSON.parse(e.data):e.data;(null==t?void 0:t.key)&&(n=t.key)}catch(o){}t({url:i,key:n,filePath:i,serverPath:i})},fail:e=>{console.error("七牛上传失败:",e),r(e)}})}))}function o(e){if(!e)return"";const r=String(e);return r.startsWith("http://")||r.startsWith("https://")?r:t.toImageUrl(r)}exports.buildAttachmentItem=function(e,t={}){var r;const i=o(e.serverPath||e.filePath||e.url||"");return{fileName:e.name||(i?null==(r=i.split("/").pop())?void 0:r.split("?")[0]:"")||""||t.fileName||"",filePath:i,fileType:e.type||t.fileType||"image/jpeg",fileSize:e.size||t.fileSize||0}},exports.createUploadListHandlers=function(t,r={}){return{afterRead:async n=>{const a=[].concat(n.file);let o=t.value.length;a.forEach((e=>{t.value.push({...e,status:"uploading",message:"上传中"})}));for(let u=0;u<a.length;u++){const n=o;try{const e=r.watermark?e=>i.addTimestampWatermark({tempFilePath:e,...r.watermark}):void 0,o=await s(a[u].url,{beforeUpload:e}),l=t.value[n];t.value.splice(n,1,{...l,status:"success",message:"",url:o.url,serverPath:o.url})}catch(l){console.error("上传失败:",l);const r=t.value[n];t.value.splice(n,1,{...r,status:"failed",message:(null==l?void 0:l.msg)||(null==l?void 0:l.message)||"上传失败"}),e.index.showToast({title:(null==l?void 0:l.msg)||(null==l?void 0:l.message)||"上传失败",icon:"none"})}o++}},deletePic:e=>{t.value.splice(e.index,1)}}},exports.mapServerFileToUploadItem=function(e){const t=o(e.filePath||e.url||"");return{url:t,serverPath:t,status:"success",message:"",name:e.fileName||e.name||"",type:e.fileType||"image/jpeg",size:e.fileSize||0}},exports.toSubmitFileUrl=o,exports.uploadSingleWithLoading=function(t,r={}){const i=r.loadingTitle||"上传中...";return e.index.showLoading({title:i,mask:!0}),s(t,r).then((t=>(e.index.hideLoading(),t))).catch((t=>{throw e.index.hideLoading(),t}))},exports.uploadToCloud=s;
|
||||
1
unpackage/dist/build/mp-weixin/utils/watermark.js
vendored
Normal file
1
unpackage/dist/build/mp-weixin/utils/watermark.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
"use strict";const t=require("../common/vendor.js");exports.addTimestampWatermark=function({tempFilePath:e,canvasId:a="watermarkCanvas",canvasWidthRef:n,canvasHeightRef:r,instance:i}){return new Promise(((s,o)=>{t.index.getImageInfo({src:e,success:d=>{const c=d.width,l=d.height;n&&void 0!==n.value&&(n.value=c),r&&void 0!==r.value&&(r.value=l),t.nextTick$1((()=>{const n=t.index.createCanvasContext(a,i);if(!n)return void o("创建水印画布上下文失败");n.drawImage(e,0,0,c,l);const r=new Date,d=`${r.getFullYear()}-${String(r.getMonth()+1).padStart(2,"0")}-${String(r.getDate()).padStart(2,"0")} ${String(r.getHours()).padStart(2,"0")}:${String(r.getMinutes()).padStart(2,"0")}:${String(r.getSeconds()).padStart(2,"0")}`,g=Math.max(14,Math.floor(c*(14/375)));n.setFontSize(g),n.setFillStyle("#C9CBD4"),n.setShadow(2,2,4,"rgba(0, 0, 0, 0.6)");const u=g,h=d.length*(.55*g),v=c-h-u,m=l-u;n.fillText(d,v,m),n.draw(!1,(()=>{setTimeout((()=>{t.index.canvasToTempFilePath({canvasId:a,destWidth:c,destHeight:l,fileType:"jpg",quality:.9,success:t=>{s(t.tempFilePath)},fail:t=>{console.error("导出带水印图片失败:",t),o(t)}},i)}),150)}))}))},fail:t=>{console.error("获取图片信息失败:",t),o(t)}})}))};
|
||||
Reference in New Issue
Block a user