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 相关文章推荐
Div Select挡住的解决办法
Aug 07 Javascript
在JavaScript中,为什么要尽可能使用局部变量?
Apr 06 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
May 03 Javascript
jQuery产品间断向下滚动效果核心代码
May 08 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
利用transition实现文字上下抖动的效果
Jan 21 Javascript
JS运动改变单物体透明度的方法分析
Jan 23 Javascript
使用Sonarqube扫描Javascript代码的示例
Dec 26 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
解决vue $http的get和post请求跨域问题
Jun 07 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
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
2014/09/26 NodeJs
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
如何基于jQuery实现五角星评分
2020/09/02 jQuery
python读写ini文件示例(python读写文件)
2014/03/25 Python
浅析Python基础-流程控制
2016/03/18 Python
Android分包MultiDex策略详解
2017/10/30 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
协议书与合同的区别
2014/04/18 职场文书
小学总务工作总结
2015/08/13 职场文书