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 相关文章推荐
Web开发之JavaScript
Mar 29 Javascript
利用谷歌地图API获取点与点的距离的js代码
Oct 11 Javascript
一个简单的瀑布流效果(主体形式自写)
May 27 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
JS实现的简洁二级导航菜单雏形效果
Oct 13 Javascript
基于jquery实现下拉框美化特效
Feb 02 Javascript
Vue.js中用v-bind绑定class的注意事项
Dec 13 Javascript
node.js中http模块和url模块的简单介绍
Oct 06 Javascript
Angular实现可删除并计算总金额的购物车功能示例
Dec 26 Javascript
Vue2 模板template的四种写法总结
Feb 23 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 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
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
javascript递归回溯法解八皇后问题
2015/04/22 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
2019/04/04 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python实现简单ftp客户端的方法
2015/06/28 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Python使用pymongo模块操作MongoDB的方法示例
2018/07/20 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
python 同时运行多个程序的实例
2019/01/07 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
介绍一下SQL Server的全文索引
2013/08/15 面试题
高校学生干部的自我评价分享
2013/11/04 职场文书
国际会议邀请函范文
2014/01/16 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
高中同学会活动方案
2014/08/14 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android