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-service": "3.6.0",
|
||||
"@vue/test-utils": "1.0.0-beta.29",
|
||||
"ali-oss": "^6.17.1",
|
||||
"autoprefixer": "^9.5.1",
|
||||
"babel-core": "7.0.0-bridge.0",
|
||||
"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