vue頁面使用阿里oss上傳功能的實例(一)
本文介紹了vue頁面使用阿里oss上傳功能的實例(一),分享給大家,也給自己留個筆記
直奔主題:
前端部分
1.前端頁面中需要引入oss-sdk:
<script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script>
2.自己封裝的upload組件:
<template>
<div>
<div class="oss_file">
<input type="file" :id="id" :multiple="multiple" @change="doUpload"/>
</div>
</div>
</div>
</template>
<script>
export default{
props:{
multiple:{
type: Boolean,
twoWay:false
},
id:{
type: String,
twoWay:false
},
url:{
type: Array,
twoWay:true
}
},
data(){
return{
region:'Your oss Region',
bucket:'Bucket Name',
};
},
methods:{
doUpload(){
const _this = this;
Vue.http.get('/alioss/getOssToken').then((result) => {
const client = new OSS.Wrapper({
region:_this.region,
accessKeyId: result.data.token.AccessKeyId,
accessKeySecret: result.data.token.AccessKeySecret,
stsToken: result.data.token.SecurityToken,
bucket:_this.bucket
})
const files = document.getElementById(_this.id);
if(files.files){
const fileLen = document.getElementById(_this.id).files
const resultUpload = [];
for (let i = 0; i < fileLen.length; i++) {
const file = fileLen[i];
const storeAs = file.name;
client.multipartUpload(storeAs, file, {
}).then((results) => {
if(results.url){
resultUpload.push(results.url);
}
}).catch((err) => {
console.log(err);
});
}
_this.url = resultUpload;
}
});
}
}
};
</script>
<style type="text/css">
.oss_file {
height: 100px;
width: 100%;
}
.oss_file input {
right: 0;
top: 0;
opacity: 0;
filter: alpha(opacity=0);
cursor: pointer;
width: 100%;
height: 100%;
}
</style>
3.使用組件:
<template>
<div>
<div>
<ali-upload :url.sync="uploadUrl" :multiple="true" :id="uploadId" :code.sync="uploadCode"></ali-upload>
</div>
<div v-for="url in uploadUrl">

</div>
</div>
</div>
</template>
<script>
import aliUpload from './../components/aliossupload.vue';
export default{
components:{
aliUpload
},
data(){
return{
uploadUrl:[],
uploadId:'file',
uploadCode:0
};
},
watch:{
uploadCode(val){
console.info(val)
}
}
};
</script>
后端部分
1.首先安裝依賴
npm install ali-oss npm install co
2.service文件
'use strict'
var OSS = require('ali-oss');
var STS = OSS.STS;
var co = require('co');
var sts = new STS({
accessKeyId: 'accessKeyId',
accessKeySecret: 'accessKeySecret',
});
var rolearn = 'acs:ram::ID:role/ram';
var policy = {
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:PutObject"
],
"Resource": [
"acs:oss:*:*:Bucket",
"acs:oss:*:*:BucketName/*"
]
}
]
};
class OssUploadService {
getOssToken(req, res){
var result = co(function* () {
var token = yield sts.assumeRole(rolearn, policy, 15 * 60, 'ossupload');
res.json({
token:token.credentials
})
}).catch(function (err) {
});
}
}
module.exports = new OssUploadService()
3.controller文件
'use strict'
var ossUploadService = require('../service/ossUploadService')
module.exports = function(app) {
app.get('/alioss/getOssToken', function(req, res) {
const result = ossUploadService.getOssToken(req, res)
if (result) {
res.json({
code: 100,
data: result
})
}
})
}
到這里就大功告成了嗎?錯!這只是完成了最基本的部分,接下來我們要在阿里云控制臺中設(shè)置權(quán)限、角色、策略等。
源碼地址:https://github.com/taosin/alioss-js-upload
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue面試created中兩次數(shù)據(jù)修改會觸發(fā)幾次頁面更新詳解
這篇文章主要為大家介紹了vue面試created中兩次數(shù)據(jù)修改會觸發(fā)幾次頁面更新問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
vue2+elementui的el-table固定列會遮住橫向滾動條及錯位問題解決方案
這篇文章主要介紹了vue2+elementui的el-table固定列會遮住橫向滾動條及錯位問題解決方案,主要解決固定列錯位后, 接下來就是把固定列往上提滾動條的高度就不會影響了,需要的朋友可以參考下2024-01-01
vue中nextTick函數(shù)和react類似實現(xiàn)代碼
Vue 3 中的 nextTick 主要通過 Promise 實現(xiàn)異步調(diào)度,返回一個 Promise 對象,這篇文章主要介紹了vue中nextTick函數(shù)和react類似實現(xiàn)代碼,需要的朋友可以參考下2024-04-04
Vue3?vite配置css?的sourceMap及文件引用配置別名的過程
這篇文章主要介紹了Vue3 vite配置css的sourceMap,及文件引用配置別名的過程,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
解決vue數(shù)據(jù)更新但table內(nèi)容不更新的問題
這篇文章主要給大家介紹了vue數(shù)據(jù)更新table內(nèi)容不更新解決方法,文中有詳細(xì)的代碼示例供大家作為參考,感興趣的同學(xué)可以參考閱讀一下2023-08-08
antd Form組件方法getFieldsValue獲取自定義組件的值操作
這篇文章主要介紹了antd Form組件方法getFieldsValue獲取自定義組件的值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
el-menu如何根據(jù)多層樹形結(jié)構(gòu)遞歸遍歷展示菜單欄
這篇文章主要介紹了el-menu根據(jù)多層樹形結(jié)構(gòu)遞歸遍歷展示菜單欄,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-07-07
vue-cli的index.html中使用環(huán)境變量方式
這篇文章主要介紹了vue-cli的index.html中使用環(huán)境變量方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10

