|
@@ -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>
|
|
|
|
|
|
|