test: aliyun oss
This commit is contained in:
parent
a50291b16c
commit
d598b96e9e
@ -65,6 +65,7 @@
|
|||||||
"@vue/cli-plugin-unit-jest": "3.6.3",
|
"@vue/cli-plugin-unit-jest": "3.6.3",
|
||||||
"@vue/cli-service": "3.6.0",
|
"@vue/cli-service": "3.6.0",
|
||||||
"@vue/test-utils": "1.0.0-beta.29",
|
"@vue/test-utils": "1.0.0-beta.29",
|
||||||
|
"ali-oss": "^6.17.1",
|
||||||
"autoprefixer": "^9.5.1",
|
"autoprefixer": "^9.5.1",
|
||||||
"babel-core": "7.0.0-bridge.0",
|
"babel-core": "7.0.0-bridge.0",
|
||||||
"babel-eslint": "10.0.1",
|
"babel-eslint": "10.0.1",
|
||||||
|
|||||||
4
public/resource/aliyun-oss-sdk-6.17.0.min.js
vendored
Normal file
4
public/resource/aliyun-oss-sdk-6.17.0.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
74
src/views/fileType/testoss.vue
Normal file
74
src/views/fileType/testoss.vue
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<template>
|
||||||
|
<input type="file" id="file" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import OSS from "ali-oss"
|
||||||
|
export default {
|
||||||
|
name: "testoss",
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
stsServerUrl: "http://localhost:7080/",
|
||||||
|
accessToken: {
|
||||||
|
AccessKeyId: '',
|
||||||
|
AccessKeySecret: '',
|
||||||
|
Expiration: '',
|
||||||
|
SecurityToken: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
let that = this
|
||||||
|
document.getElementById('file').addEventListener('change', function (e) {
|
||||||
|
let file = e.target.files[0];
|
||||||
|
let storeAs = file.name;
|
||||||
|
console.log(file.name + ' => ' + storeAs);
|
||||||
|
// OSS.urllib是SDK内部封装的发送请求的逻辑,开发者可以使用任何发送请求的库向sts-server发送请求。
|
||||||
|
OSS.urllib.request(that.stsServerUrl, {method: 'GET'}, (err, response) => {
|
||||||
|
if (err) {
|
||||||
|
return alert(err);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
this.accessToken = JSON.parse(response);
|
||||||
|
} catch (e) {
|
||||||
|
return alert('parse sts response info error: ' + e.message);
|
||||||
|
}
|
||||||
|
let client = new OSS({
|
||||||
|
accessKeyId: this.accessToken.AccessKeyId,
|
||||||
|
accessKeySecret: this.accessToken.AccessKeySecret,
|
||||||
|
stsToken: this.accessToken.SecurityToken,
|
||||||
|
endpoint: 'oss-cn-guangzhou.aliyuncs.com',
|
||||||
|
bucket: 'jmalcloud',
|
||||||
|
internal: true,
|
||||||
|
cname: false,
|
||||||
|
secure: true,
|
||||||
|
refreshSTSToken: async () => this.refreshToken()
|
||||||
|
});
|
||||||
|
// storeAs可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。
|
||||||
|
// file可以自定义为File对象、Blob数据以及OSS Buffer。
|
||||||
|
client.multipartUpload(storeAs, file).then(function (result) {
|
||||||
|
console.log(result);
|
||||||
|
}).catch(function (err) {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async refreshToken() {
|
||||||
|
// 向您搭建的STS服务获取临时访问凭证。
|
||||||
|
const info = await fetch(this.stsServerUrl);
|
||||||
|
return {
|
||||||
|
accessKeyId: info.AccessKeyId,
|
||||||
|
accessKeySecret: info.AccessKeySecret,
|
||||||
|
stsToken: info.SecurityToken
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
Loading…
x
Reference in New Issue
Block a user