"use strict"; const common_vendor = require("../../../common/vendor.js"); const utils_request = require("../../../utils/request.js"); const config_setting = require("../../../config/setting.js"); const computeSignature = (accessKeySecret, canonicalString) => { return common_vendor.crypto.enc.Base64.stringify(common_vendor.crypto.HmacSHA1(canonicalString, accessKeySecret)); }; async function uploadOssByPath(filePath) { return new Promise(async (resolve, reject) => { const date = /* @__PURE__ */ new Date(); date.setMinutes(date.getMinutes() + 1); const policyText = { expiration: date.toISOString(), // 设置policy过期时间。 conditions: [ // 限制上传大小。 ["content-length-range", 0, 1024 * 1024 * 1024] ] }; let sts = common_vendor.index.getStorageSync("sts"); let stsExpired = common_vendor.index.getStorageSync("stsExpiredAt"); if (!sts || stsExpired && common_vendor.dayjs().isBefore(common_vendor.dayjs(stsExpired))) { const { data: { data: { credentials } } } = await utils_request.http.get(`${config_setting.SERVER_API_URL}/oss/getSTSToken`); common_vendor.index.setStorageSync("sts", credentials); common_vendor.index.setStorageSync("stsExpiredAt", credentials.expiration); sts = credentials; } console.log(sts); const [filename, ext] = filePath.split("."); const key = `headers/${common_vendor.md5(filename + Math.random() * 1e5)}.${ext}`; const policy = common_vendor.gBase64.encode(JSON.stringify(policyText)); const signature = computeSignature(sts.accessKeySecret, policy); common_vendor.index.uploadFile({ url: "https://oss.wsdns.cn", name: "file", filePath, formData: { key, policy, OSSAccessKeyId: sts.accessKeyId, signature, "x-oss-security-token": sts.securityToken }, success: () => { resolve(`https://oss.wsdns.cn/${key}`); }, error: (err) => reject(err) }); }); } exports.uploadOssByPath = uploadOssByPath;