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 相关文章推荐
JavaScript中null与undefined分析
Jul 25 Javascript
利用腾讯的ip地址库做ip物理地址定位
Jul 24 Javascript
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
Spring Boot/VUE中路由传递参数的实现代码
Mar 02 Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
Oct 26 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
Apr 17 Javascript
js 判断当前时间是否处于某个一个时间段内
Sep 19 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
React倒计时功能实现代码——解耦通用
Sep 18 Javascript
js获取url页面id,也就是最后的数字文件名
Sep 25 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
快速掌握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安全防范技巧分享
2011/11/03 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
ThinkPHP3.1新特性之G方法的使用
2014/06/19 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
js编写的treeview使用方法
2016/11/11 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
对angularJs中2种自定义服务的实例讲解
2018/09/30 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
python处理二进制数据的方法
2015/06/03 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
python实现代码审查自动回复消息
2021/02/01 Python
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
人事档案接收函
2014/01/12 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
会计实训报告范文
2014/11/04 职场文书
先进班组材料范文
2014/12/25 职场文书
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL