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 相关文章推荐
Js中sort()方法的用法
Nov 04 Javascript
Ucren Virtual Desktop V2.0
Nov 07 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
Nov 21 Javascript
javascript正则表达式使用replace()替换手机号的方法
Jan 19 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
Jul 22 Javascript
EditPlus中的正则表达式 实战(4)
Dec 15 Javascript
Vue通过input筛选数据
Oct 26 Javascript
微信运维交互机器人的示例代码
Nov 12 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
Sep 01 Javascript
node-red File读取好保存实例讲解
Sep 11 Javascript
vue实现简单加法计算器
Oct 22 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
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
canvas绘制多边形
2017/02/24 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python PyTorch参数初始化和Finetune
2018/02/11 Python
flask框架视图函数用法示例
2018/07/19 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
Python基于进程池实现多进程过程解析
2020/04/30 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
益模软件Java笔试题
2012/03/27 面试题
机电一体化专业应届本科生求职信
2013/09/27 职场文书
酒店门卫岗位职责
2013/12/29 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
pycharm代码删除恢复的方法
2021/06/26 Python
MySQL中order by的执行过程
2022/06/05 MySQL