소스 검색

图片上传组件

1
mo 3 년 전
부모
커밋
ff58a37afa
2개의 변경된 파일106개의 추가작업 그리고 92개의 파일을 삭제
  1. 103 88
      src/components/Upload/multiUpload.vue
  2. 3 4
      src/components/Upload/singleUpload.vue

+ 103 - 88
src/components/Upload/multiUpload.vue

@@ -1,8 +1,9 @@
-<template> 
+<template>
+   
   <div>
     <el-upload
       :action="ossUploadUrl"
-      :data="useOss?dataObj:null"
+      :data="useOss ? dataObj : null"
       list-type="picture-card"
       :file-list="fileList"
       :before-upload="beforeUpload"
@@ -15,80 +16,94 @@
       <i class="el-icon-plus"></i>
     </el-upload>
     <el-dialog :visible.sync="dialogVisible">
-      <img width="100%" :src="dialogImageUrl" alt="">
+      <img width="100%" :src="dialogImageUrl" alt="" />
     </el-dialog>
   </div>
 </template>
 <script>
-  import {policy} from '@/api/oss'
+import { policy } from "@/api/oss";
 
-  export default {
-    name: 'multiUpload',
-    props: {
-      //图片属性数组
-      value: Array,
-      //最大上传图片数量
-      maxCount:{
-        type:Number,
-        default:5
-      }
+export default {
+  name: "multiUpload",
+  props: {
+    //图片属性数组
+    value: Array,
+    //最大上传图片数量
+    maxCount: {
+      type: Number,
+      default: 5,
     },
-    data() {
-      return {
-        dataObj: {
-          policy: '',
-          signature: '',
-          key: '',
-          ossaccessKeyId: '',
-          dir: '',
-          host: ''
-        },
-        dialogVisible: false,
-        dialogImageUrl:null,
-        useOss:true, //使用oss->true;使用MinIO->false
-        ossUploadUrl:'https://ks3-cn-beijing.ksyuncs.com/daya',
-        minioUploadUrl:'http://localhost:8080/minio/upload',
-      };
+  },
+  data() {
+    return {
+      dataObj: {
+        policy: "",
+        signature: "",
+        key: "",
+        KSSAccessKeyId: "",
+        // dir: "",
+        acl: "public-read",
+        name: "",
+      },
+      dialogVisible: false,
+      dialogImageUrl: null,
+      useOss: true, //使用oss->true;使用MinIO->false
+      ossUploadUrl: "https://ks3-cn-beijing.ksyuncs.com/daya",
+      minioUploadUrl: "http://localhost:8080/minio/upload",
+    };
+  },
+  computed: {
+    fileList() {
+      let fileList = [];
+      for (let i = 0; i < this.value.length; i++) {
+        fileList.push({ url: this.value[i] });
+      }
+      return fileList;
     },
-    computed: {
-      fileList() {
-        let fileList=[];
-        for(let i=0;i<this.value.length;i++){
-          fileList.push({url:this.value[i]});
-        }
-        return fileList;
+  },
+  methods: {
+    emitInput(fileList) {
+      let value = [];
+      for (let i = 0; i < fileList.length; i++) {
+        value.push(fileList[i].url);
       }
+      this.$emit("input", value);
     },
-    methods: {
-      emitInput(fileList) {
-        let value=[];
-        for(let i=0;i<fileList.length;i++){
-          value.push(fileList[i].url);
-        }
-        this.$emit('input', value)
-      },
-      handleRemove(file, fileList) {
-        this.emitInput(fileList);
-      },
-      handlePreview(file) {
-        this.dialogVisible = true;
-        this.dialogImageUrl=file.url;
-      },
-      beforeUpload(file) {
-        let _self = this;
-        if(!this.useOss){
-          //不使用oss不需要获取策略
-          return true;
-        }
-        return new Promise((resolve, reject) => {
-          policy().then(response => {
+    handleRemove(file, fileList) {
+      this.emitInput(fileList);
+    },
+    handlePreview(file) {
+      this.dialogVisible = true;
+      this.dialogImageUrl = file.url;
+    },
+    beforeUpload(file) {
+      let _self = this;
+      if (!this.useOss) {
+        //不使用oss不需要获取策略
+        return true;
+      }
+      return new Promise((resolve, reject) => {
+        // console.log(file, "file");
+         let key = new Date().getTime()+file.name
+        let obj = {
+          filename: file.name,
+          postData: {
+            filename: file.name,
+            acl: "public-read",
+            key: key,
+            unknowValueField: [],
+          },
+        };
+        policy(obj)
+          .then((response) => {
             _self.dataObj.policy = response.data.policy;
             _self.dataObj.signature = response.data.signature;
             _self.dataObj.KSSAccessKeyId = response.data.kssAccessKeyId;
             _self.dataObj.key = key;
             _self.dataObj.name = file.name;
-             _self.dataObj.acl = 'public-read'
-                var ks3Options = {
+            _self.dataObj.acl = "public-read";
+
+            var ks3Options = {
               KSSAccessKeyId: response.data.kssAccessKeyId,
               policy: response.data.policy,
               signature: response.data.signature,
@@ -98,39 +113,39 @@
               uploadDomain: "https://ks3-cn-beijing.ksyuncs.com/daya", //北京region
               autoStart: true,
             };
-                  console.log(ks3Options,'ks3Options')
+            console.log(ks3Options, "ks3Options");
             var pluploadOptions = {
               drop_element: document.body,
             };
             var tempUpload = new ks3FileUploader(ks3Options);
-            resolve(true)
-          }).catch(err => {
-            console.log(err)
-            reject(false)
+            resolve(true);
           })
-        })
-      },
-      handleUploadSuccess(res, file) {
-        let url = this.dataObj.host + '/' + this.dataObj.dir + '/' + file.name;
-        if(!this.useOss){
-          //不使用oss直接获取图片路径
-          url = res.data.url;
-        }
-        this.fileList.push({name: file.name,url:url});
-        this.emitInput(this.fileList);
-      },
-      handleExceed(files, fileList) {
-        this.$message({
-          message: '最多只能上传'+this.maxCount+'张图片',
-          type: 'warning',
-          duration:1000
-        });
-      },
-    }
-  }
+          .catch((err) => {
+            console.log(err);
+            reject(false);
+          });
+      });
+    },
+    handleUploadSuccess(res, file) {
+        let url = this.ossUploadUrl+'/'+ this.dataObj.key
+      if (!this.useOss) {
+        //不使用oss直接获取图片路径
+        url = res.data.url;
+      }
+      this.fileList.push({ name: file.name, url: url });
+      this.emitInput(this.fileList);
+    },
+    handleExceed(files, fileList) {
+      this.$message({
+        message: "最多只能上传" + this.maxCount + "张图片",
+        type: "warning",
+        duration: 1000,
+      });
+    },
+  },
+};
 </script>
 <style>
-
 </style>
 
 

+ 3 - 4
src/components/Upload/singleUpload.vue

@@ -94,8 +94,8 @@ export default {
       console.log(file,'掉用beforeUpload');
 
       return new Promise((resolve, reject) => {
-        // let key = '20150115/中文/'+new Date().getTime()+file.name
-        let key = '20150115/${filename}'
+        let key = new Date().getTime()+file.name
+        // let key = `20150115/${file.name}`
         let obj = {filename:file.name,postData:{'filename':file.name, "acl":"public-read","key":key,unknowValueField:[]}}
         console.log(obj,'obj')
         policy(obj)
@@ -135,10 +135,9 @@ export default {
       });
     },
     handleUploadSuccess(res, file) {
+      let url = this.ossUploadUrl+'/'+ this.dataObj.key
       this.showFileList = true;
       this.fileList.pop();
-      let url = file.url;
-      console.log(url)
       if (!this.useOss) {
         //不使用oss直接获取图片路径
         url = res.data.url;