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利用控件对windows的操作实现原理与应用
Dec 23 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
Jan 24 Javascript
JavaScript中匿名函数用法实例
Mar 23 Javascript
JQuery给网页更换皮肤的方法
May 30 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
May 17 Javascript
jQuery Ajax页面局部加载方法汇总
Jun 02 Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 Javascript
Parcel 打包示例(React HelloWorld)
Jan 16 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 jQuery
Vue项目打包部署到iis服务器的配置方法
Oct 14 Javascript
在Vue 中获取下拉框的文本及选项值操作
Aug 13 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
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
分享10段PHP常用代码
2015/11/11 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python之信息加密题目详解
2019/06/26 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
高中数学教师求职信
2013/10/30 职场文书
暑期社会实践感言
2014/02/25 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书