sys 2 жил өмнө
parent
commit
c1aee26d3b

+ 2 - 1
api/common.js

@@ -1,8 +1,9 @@
 import {request} from '../service/ajax.js'
 
-const commonUrl = '/api/common/'
+const commonUrl = '/utility/'
 // 发送短信
 export const commonSend = (data) => request(commonUrl + 'send', 'post', { ...data })
 // 获取sts
 export const getSts = (data) => request(commonUrl + 'sts', 'post', { ...data })
+export const getTxySts = (data) => request(commonUrl + 'credential', 'post', { ...data })
 

+ 30 - 0
package-lock.json

@@ -6,6 +6,7 @@
     "": {
       "dependencies": {
         "animate.css": "^4.1.1",
+        "cos-js-sdk-v5": "^1.4.18",
         "inobounce": "^0.2.1",
         "jquery": "^3.6.4",
         "uni-read-pages": "^1.0.5",
@@ -56,11 +57,27 @@
         "source-map": "^0.6.1"
       }
     },
+    "node_modules/@xmldom/xmldom": {
+      "version": "0.8.8",
+      "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.8.tgz",
+      "integrity": "sha512-0LNz4EY8B/8xXY86wMrQ4tz6zEHZv9ehFMJPm8u2gq5lQ71cfRKdaKyxfJAx5aUoyzx0qzgURblTisPGgz3d+Q==",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
     "node_modules/animate.css": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz",
       "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ=="
     },
+    "node_modules/cos-js-sdk-v5": {
+      "version": "1.4.18",
+      "resolved": "https://registry.npmjs.org/cos-js-sdk-v5/-/cos-js-sdk-v5-1.4.18.tgz",
+      "integrity": "sha512-vTy8p59qnEoNJH/1chBSU8lSJDEcKV5PeOlAngmPbmHEwoMNJmKmA71nnquGIWHI4KpR4n57yC+RKP6RZkgsBg==",
+      "dependencies": {
+        "@xmldom/xmldom": "^0.8.6"
+      }
+    },
     "node_modules/crypto-js": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
@@ -211,11 +228,24 @@
         "source-map": "^0.6.1"
       }
     },
+    "@xmldom/xmldom": {
+      "version": "0.8.8",
+      "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.8.tgz",
+      "integrity": "sha512-0LNz4EY8B/8xXY86wMrQ4tz6zEHZv9ehFMJPm8u2gq5lQ71cfRKdaKyxfJAx5aUoyzx0qzgURblTisPGgz3d+Q=="
+    },
     "animate.css": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz",
       "integrity": "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ=="
     },
+    "cos-js-sdk-v5": {
+      "version": "1.4.18",
+      "resolved": "https://registry.npmjs.org/cos-js-sdk-v5/-/cos-js-sdk-v5-1.4.18.tgz",
+      "integrity": "sha512-vTy8p59qnEoNJH/1chBSU8lSJDEcKV5PeOlAngmPbmHEwoMNJmKmA71nnquGIWHI4KpR4n57yC+RKP6RZkgsBg==",
+      "requires": {
+        "@xmldom/xmldom": "^0.8.6"
+      }
+    },
     "crypto-js": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",

+ 1 - 0
package.json

@@ -1,6 +1,7 @@
 {
   "dependencies": {
     "animate.css": "^4.1.1",
+    "cos-js-sdk-v5": "^1.4.18",
     "inobounce": "^0.2.1",
     "jquery": "^3.6.4",
     "uni-read-pages": "^1.0.5",

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
service/cos-wx-sdk-v5.min.js


+ 8 - 0
service/tools.js

@@ -278,4 +278,12 @@ tools.leftClick = function () {
     }
 }
 
+
+tools.getRandFileName = function (filePath) {
+    let extIndex = filePath.lastIndexOf('.');
+    let extName = extIndex === -1 ? '' : filePath.substr(extIndex);
+    return parseInt('' + Date.now() + Math.floor(Math.random() * 900 + 100), 10).toString(36) + extName;
+}
+
+
 export default tools

+ 96 - 0
service/txOssSts.js

@@ -0,0 +1,96 @@
+/**
+ * 微信小程序通过STS直传阿里云OSS
+ *(uniapp版上传,小程序原生需要将uni.XXX替换为wx.XXX)
+ *
+ * @param {filePath} 图片临时地址
+ * @param {option|Object} OSS和STS配置
+ * @param {savePath} oss中的文件目录
+ * @param {AccessKeySecret} 服务端返回的STS中的AccessKeySecret
+ * @param {SecurityToken} 服务端返回的STS中的SecurityToken
+ * @param {AccessKeyId} 服务端返回的STS中的AccessKeyId
+ * @param {bucket} 存储桶
+ * @param {area} 地区
+ * @return {string|boolean} 成功返回文件地址,失败返回false
+ */
+import COS from "./cos-wx-sdk-v5.min"
+
+console.log(COS)
+import tools from "./tools";
+import {getTxySts} from "@/api/common";
+
+// 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.cloud.tencent.com/cos5/bucket
+let Bucket = 'wealfavor-1257406827';
+// 存储桶Region可以在COS控制台指定存储桶的概览页查看 https://console.cloud.tencent.com/cos5/bucket/
+// 关于地域的详情见 https://cloud.tencent.com/document/product/436/6224
+let Region = 'ap-beijing';
+
+let cos=null;
+function startCos(){
+    cos = new COS({
+        getAuthorization: function (options, callback) {
+            console.log('---------------获取初始化信息')
+            getTxySts().then((res)=>{
+                if(res.code===0){
+                    callback({
+                        TmpSecretId: res.data.credentials.tmpSecretId,
+                        TmpSecretKey: res.data.credentials.tmpSecretKey,
+                        XCosSecurityToken: res.data.credentials.sessionToken,
+                        StartTime: res.data.startTime, // 时间戳,单位秒,如:1580000000,建议返回服务器时间作为签名的开始时间,避免用户浏览器本地时间偏差过大导致签名错误
+                        ExpiredTime: res.data.expiredTime, // 时间戳,单位秒,如:1580000900
+                    })
+                }
+            })
+
+        }
+    });
+}
+
+/**
+ * COS文件上传
+ * @param file
+ * @param folder 上传目录
+ * @returns {Promise<unknown>}
+ */
+function txUploadFile(file,folder){
+    if(cos===null){
+        console.log('对象初始化')
+        //初始化对象
+        startCos();
+    }
+    //默认为个人目录
+    folder=folder==='moment'?'moment':'gallery'
+    tools.showLoading()
+    return new Promise((resolve, reject) => {
+        console.log('cos-*-------------------------',cos)
+        console.log(file)
+        console.log(folder+'/'+tools.getDate()+tools.getRandFileName(file))
+        // 分片上传文件
+        cos.postObject({
+            Bucket: Bucket,
+            Region: Region,
+            Key: folder+'/'+tools.getDate()+'/'+tools.getRandFileName(file),
+            FilePath: file,
+            onHashProgress: function (progressData) {
+                console.log('校验中', JSON.stringify(progressData));
+            },
+            onProgress: function (progressData) {
+                console.log('上传中', JSON.stringify(progressData));
+            },
+        }, function (err, data) {
+            tools.hideLoading()
+            console.log(err, data);
+            if(data.Location!==undefined){
+                data.Location='https://'+data.Location;
+                resolve( data)
+            }else {
+                resolve( false)
+            }
+
+        });
+    })
+
+}
+
+
+
+export default txUploadFile

+ 12 - 0
yarn.lock

@@ -28,11 +28,23 @@
     "postcss" "^8.4.14"
     "source-map" "^0.6.1"
 
+"@xmldom/xmldom@^0.8.6":
+  "integrity" "sha512-0LNz4EY8B/8xXY86wMrQ4tz6zEHZv9ehFMJPm8u2gq5lQ71cfRKdaKyxfJAx5aUoyzx0qzgURblTisPGgz3d+Q=="
+  "resolved" "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.8.tgz"
+  "version" "0.8.8"
+
 "animate.css@^4.1.1":
   "integrity" "sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ=="
   "resolved" "https://registry.npmjs.org/animate.css/-/animate.css-4.1.1.tgz"
   "version" "4.1.1"
 
+"cos-js-sdk-v5@^1.4.18":
+  "integrity" "sha512-vTy8p59qnEoNJH/1chBSU8lSJDEcKV5PeOlAngmPbmHEwoMNJmKmA71nnquGIWHI4KpR4n57yC+RKP6RZkgsBg=="
+  "resolved" "https://registry.npmjs.org/cos-js-sdk-v5/-/cos-js-sdk-v5-1.4.18.tgz"
+  "version" "1.4.18"
+  dependencies:
+    "@xmldom/xmldom" "^0.8.6"
+
 "crypto-js@^4.1.1":
   "integrity" "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
   "resolved" "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz"

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно