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内核之基本概念
Oct 21 Javascript
jQuery操作select的实例代码
Jun 14 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
Apr 19 Javascript
js this函数调用无需再次抓获id,name或标签名
Mar 03 Javascript
js限制checkbox选中个数以限制六个为例
Jul 15 Javascript
基于javascript实现文字无缝滚动效果
Mar 22 Javascript
非常优秀的JS图片轮播插件Swiper的用法
Jan 03 Javascript
原生JS实现图片网格式渐显、渐隐效果
Jun 05 Javascript
javascript+jQuery实现360开机时间显示效果
Nov 03 jQuery
浅谈Vue SSR 的 Cookies 问题
Nov 20 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 Javascript
webpack介绍使用配置教程详解webpack介绍和使用
Jun 25 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
php中日期加减法运算实现代码
2011/12/08 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
jquery统计用户选中的复选框的个数
2014/06/06 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
python 生成目录树及显示文件大小的代码
2009/07/23 Python
Python迭代器和生成器介绍
2015/03/06 Python
python字符串常用方法
2018/06/14 Python
python实现图片中文字分割效果
2019/07/22 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
parser.add_argument中的action使用
2020/04/20 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
2015年度班主任自我评价
2015/03/11 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL
Nginx的基本概念和原理
2022/03/21 Servers
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python