Browse Source

Merge branch 'ossFileUpload' into 12/16SAAS

lex 2 years ago
parent
commit
143121847f
2 changed files with 101 additions and 25 deletions
  1. 10 0
      src/views/massMessage/api.js
  2. 91 25
      src/views/massMessage/operation.vue

+ 10 - 0
src/views/massMessage/api.js

@@ -43,3 +43,13 @@ export const imSendGroupMessageUpdate = (data) => {
     data,
   });
 };
+
+// 获取上传信息
+export function policy(data) {
+  return request({
+    method: "post",
+    // baseURL: "/api-web",
+    url: "/getUploadSign",
+    data,
+  });
+}

+ 91 - 25
src/views/massMessage/operation.vue

@@ -48,7 +48,7 @@
     <van-cell-group class="cellGroup">
       <div
         class="van-cell--required"
-        style="padding: 10px 16px 0;color: #646566;font-size: 14px"
+        style="padding: 10px 16px 0; color: #646566; font-size: 14px"
       >
         发送内容
       </div>
@@ -63,7 +63,7 @@
       ></van-field>
       <div class="access">
         <p class="title">附件</p>
-        <van-field style="padding: 0;" :border="false">
+        <van-field style="padding: 0" :border="false">
           <template #input>
             <van-uploader
               v-model="uploader"
@@ -123,12 +123,15 @@
 import dayjs from "dayjs";
 import Header from "@/components/header";
 import SelectGroup from "./selectGroup";
+import qs from "qs";
 import { uploadFile } from "@/api/app";
 import {
   imSendGroupMessageSend,
   imSendGroupMessageDelete,
   imSendGroupMessageUpdate,
+  policy,
 } from "./api";
+import axios from "axios";
 export default {
   name: "operation",
   components: { Header, SelectGroup },
@@ -156,6 +159,15 @@ export default {
         sendTime: query.sendTime || "",
         targetIds: targetIds || "",
       },
+      ossUploadUrl: "https://ks3-cn-beijing.ksyuncs.com/daya",
+      dataObj: {
+        policy: "",
+        signature: "",
+        key: "",
+        KSSAccessKeyId: "",
+        acl: "public-read",
+        name: "",
+      },
     };
   },
   methods: {
@@ -184,41 +196,95 @@ export default {
     },
     async afterRead(file) {
       // 上传头像
-      this.$toast.loading({
-        duration: 0,
-        forbidClick: true,
-        message: "上传中...",
-      });
+      // console.log(file);
       const form = this.form;
       try {
         file.status = "uploading";
         file.message = "上传中...";
+        let tempName = file.file.name || "";
+        const fileName = tempName && tempName.replace(/ /gi, "_");
+        let key = new Date().getTime() + fileName;
+        let objTemp = {
+          filename: fileName,
+          bucketName: this.bucket_name,
+          postData: {
+            filename: fileName,
+            acl: "public-read",
+            key: key,
+            unknowValueField: [],
+          },
+        };
+
+        const res = await policy(objTemp);
+        const obj = {
+          policy: res.data.policy,
+          signature: res.data.signature,
+          key: key,
+          KSSAccessKeyId: res.data.kssAccessKeyId,
+          acl: "public-read",
+          name: fileName,
+        };
+
         let formData = new FormData();
-        formData.append("file", file.file);
-        let res = await uploadFile(formData);
-        this.$toast.clear();
-        let result = res.data;
-        if (result.code == 200) {
-          file.status = "done";
-          form.fileName = file.file.name;
-          form.fileUrl = result.data.url;
-          form.messageType = this.onCheckFileType(file.file.type);
-        } else {
-          file.status = "failed";
-          file.message = "上传失败";
-          this.$toast(result.msg);
-          form.fileName = "";
-          form.fileUrl = "";
-          return false;
+        for (let key in obj) {
+          formData.append(key, obj[key]);
         }
-      } catch (err) {
-        this.$toast.clear();
+        formData.append("file", file.file);
+        await axios({
+          method: "post",
+          url: this.ossUploadUrl,
+          data: formData,
+        });
+        const uploadUrl = this.ossUploadUrl + "/" + key;
+        file.status = "done";
+        form.fileName = file.file.name;
+        form.fileUrl = uploadUrl;
+        form.messageType = this.onCheckFileType(file.file.type);
+
+        // console.log(form);
+      } catch (e) {
+        //
         file.status = "failed";
         file.message = "上传失败";
         form.fileName = "";
         form.fileUrl = "";
         return false;
       }
+      // this.$toast.loading({
+      //   duration: 0,
+      //   forbidClick: true,
+      //   message: "上传中...",
+      // });
+      //
+      // try {
+      //   file.status = "uploading";
+      //   file.message = "上传中...";
+      //   let formData = new FormData();
+      //   formData.append("file", file.file);
+      //   let res = await uploadFile(formData);
+      //   this.$toast.clear();
+      //   let result = res.data;
+      //   if (result.code == 200) {
+      //     file.status = "done";
+      //     form.fileName = file.file.name;
+      //     form.fileUrl = result.data.url;
+      //     form.messageType = this.onCheckFileType(file.file.type);
+      //   } else {
+      //     file.status = "failed";
+      //     file.message = "上传失败";
+      //     this.$toast(result.msg);
+      //     form.fileName = "";
+      //     form.fileUrl = "";
+      //     return false;
+      //   }
+      // } catch (err) {
+      //   this.$toast.clear();
+      //   file.status = "failed";
+      //   file.message = "上传失败";
+      //   form.fileName = "";
+      //   form.fileUrl = "";
+      //   return false;
+      // }
     },
     onCheckFileType(type) {
       if (type.indexOf("image") != -1) {