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 相关文章推荐
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
Jan 23 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
Nov 26 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
Jul 31 Javascript
功能强大的Bootstrap组件(结合js)
Aug 03 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
Aug 30 Javascript
VueJs监听window.resize方法示例
Jan 17 Javascript
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
基于Koa2写个脚手架模拟接口服务的方法
Nov 27 Javascript
JS实现轮播图效果
Jan 11 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和XSS跨站攻击的防范
2007/04/17 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
javascript网页关闭时提醒效果脚本
2008/10/22 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
js单词形式的运算符
2014/05/06 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
javascript input输入框模糊提示功能的实现
2017/09/25 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
Python脚本实现自动发带图的微博
2016/04/27 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
工程造价专业大专生求职信
2013/10/06 职场文书
体育教师自我鉴定
2014/02/12 职场文书
小学生读书活动总结
2014/06/30 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
行风评议整改报告
2014/11/06 职场文书
施工安全协议书
2016/03/22 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis