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检测函数
May 31 Javascript
javascript 主动派发事件总结
Aug 09 Javascript
form.submit()不能提交表单的错误原因及解决方法
Oct 13 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
Mar 10 Javascript
怎么引入(调用)一个JS文件
May 26 Javascript
微信小程序 实现拖拽事件监听实例详解
Nov 16 Javascript
JS中检测数据类型的几种方式及优缺点小结
Dec 12 Javascript
JavaScript解析JSON格式数据的方法示例
Jan 24 Javascript
Swiper实现轮播图效果
Jul 03 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
Dec 06 Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
详解Node.js异步处理的各种写法
Jun 09 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
NOT NULL 和NULL
2007/01/15 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
2014/07/25 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
jquery实现弹窗(系统提示框)效果
2019/12/10 jQuery
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
Python中有趣在__call__函数
2015/06/21 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
python 字符串只保留汉字的方法
2018/11/16 Python
python 解决pycharm运行py文件只有unittest选项的问题
2020/09/01 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
雷蛇美国官网:Razer
2020/04/03 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
租房协议书范例
2014/10/14 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
netty 实现tomcat的示例代码
2022/06/05 Servers