npm install ali-oss --save
const OSS = require('ali-oss');
const client = new OSS({
region: 'oss-cn-hangzhou-zwynet-d01-a',
accessKeyId: 'RmcrhGFdaT3AjDrl',
accessKeySecret: 'bA8gJz25IdtekrlcBTvVrss60zaImB',
bucket: 'osscommon',
internal: true,
cname: true,
endpoint: 'osscommon.oss-cn-hangzhou-zwynet-d01-a.internet.cloud.zj.gov.cn',
secure: true
});
let envPre = 'preprod/';
const origin = window.location.origin;
if (origin.includes('dev')) {
envPre = 'dev/';
} else if (origin.includes('test')) {
envPre = 'test/';
} else if (origin.includes('gov') && !origin.includes('2020')) {
envPre = 'prod/';
} else if (process.env.NODE_ENV === 'development') {
envPre = 'dev/';
}
export const multipartUpload = async (objNamePath, file, option = {}) => {
console.log(envPre + objNamePath, file, option);
try {
const result = await client.multipartUpload(envPre + objNamePath, file, {
...option
});
return result;
} catch (e) {
console.log(e);
}
};
export const signatureUrl = async ObjName => {
try {
const result = await client.signatureUrl(`${envPre}${ObjName}`, {
expires: 315360000
});
return result;
} catch (e) {
console.log(e);
}
};
export const getFileNameUUID = () => {
function rx() {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}
return `${+new Date()}_${rx()}${rx()}`;
};
export const cancel = () => {
let statusMsg = '取消上传';
if (client) {
client.cancel();
} else {
statusMsg = '取消上传失败';
}
return statusMsg;
};
export const getRealFileUrl = url => {
url = url.split('?')[0];
url = url.split('supervise_document')[1];
return url;
};
<el-upload
class="upload-demo"
drag
action="#"
:limit="1"
multiple
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-upload="beforeUpload"
:file-list="fileList"
:http-request="handleUpload"
:on-exceed="onExceed"
>
<i class="el-icon-upload" />
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div v-if="imageUrl" class="avatar">
<video ref="videoRef" controls :poster="imageUrl">
<source :src="imageUrl">
</video>
</div>
<div v-if="detailForm.learnType === 2" slot="tip" class="el-upload__tip">只支持mp4,ogg,webm格式视频文件</div>
<div v-if="detailForm.learnType === 1 && detailForm.documentType === 2" slot="tip" class="el-upload__tip">只支持.pdf扩展名</div>
</el-upload>
handleUpload(file) {
console.log(file, 'file');
this.percentage = 0;
this.isPercentage = true;
var obj = file.file.name;
var index = obj.lastIndexOf(".");
obj = obj.substring(index, obj.length);
const ossFileName = `${getFileNameUUID()}${this.getFileName(file.file.name)}`;
const option = {
progress: (p) => {
this.percentage = Number((p * 100).toFixed(0));
}
};
console.log("ossFileName", ossFileName);
multipartUpload(`popularize-law-education/${file.file.name}`, file.file, option).then(res => {
if (res && res.res.status === 200) {
signatureUrl(`popularize-law-education/${file.file.name}}`).then(res => {
console.log('地址', res);
API.changeOssUrl({
ossDirectory: `/popularize-law-education/${file.file.name}`
}).then(res => {
if (res.success) {
this.dialogVisible = false;
this.$message.success('上传成功');
}
});
});
} else {
this.fileList = [];
}
});
},