vue页面使用阿里oss上传功能的实例(一)


Posted in Javascript onAugust 09, 2017

本文介绍了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">
   ![](url)
  </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
  })
 }
 })
}

到这里就大功告成了吗?错!这只是完成了最基本的部分,接下来我们要在阿里云控制台中设置权限、角色、策略等。

源码地址:https://github.com/taosin/alioss-js-upload

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
Mar 06 Javascript
Jquery替换已存在于element上的event的方法
Mar 09 Javascript
js解决select下拉选不中问题
Oct 14 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
Feb 17 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
JS设置随机出现2个数字的实例代码
Jul 19 Javascript
详解React开发必不可少的eslint配置
Feb 05 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
Mar 25 jQuery
vue源码解析之事件机制原理
Apr 21 Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 Javascript
Antd的table组件表格的序号自增操作
Oct 27 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
Aug 09 #jQuery
vue 打包后的文件部署到express服务器上的方法
Aug 09 #Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 #Javascript
JS实现的加减乘除四则运算计算器示例
Aug 09 #Javascript
AngularJS ionic手势事件的使用总结
Aug 09 #Javascript
Vue2.0实现将页面中表格数据导出excel的实例
Aug 09 #Javascript
webpack 1.x升级过程中的踩坑总结大全
Aug 09 #Javascript
You might like
对javascript和select部件的结合运用
2006/10/09 PHP
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
2013/05/15 PHP
Javascript倒计时代码
2010/08/12 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
jquery正则表达式验证(手机号、身份证号、中文名称)
2015/12/31 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
canvas绘制七巧板
2017/02/03 Javascript
vue.js树形组件之删除双击增加分支实例代码
2017/02/28 Javascript
JS实现根据详细地址获取经纬度功能示例
2019/04/16 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
出国留学计划书
2014/04/27 职场文书
10的分与合教学反思
2014/04/30 职场文书
减负增效提质方案
2014/05/23 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
小学优秀学生评语
2014/12/29 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
一般纳税人申请报告
2015/05/18 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书