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 相关文章推荐
prototype 学习笔记整理
Jul 17 Javascript
jquery 得到当前页面高度和宽度的两个函数
Feb 21 Javascript
jQuery Ajax使用 全解析
Dec 15 Javascript
js中的string.format函数代码
Aug 11 Javascript
js操作checkbox遇到的问题解决
Jun 29 Javascript
JQuery中serialize() 序列化
Mar 13 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 Javascript
js实现HashTable(哈希表)的实例分析
Nov 21 Javascript
详解jQuery简单的表格应用
Dec 16 Javascript
Angular下H5上传图片的方法(可多张上传)
Jan 09 Javascript
微信小程序 地图map实例详解
Jun 07 Javascript
最通俗易懂的javascript变量提升详解
Aug 05 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
php+ajax实现仿百度查询下拉内容功能示例
2017/10/20 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
jquery 事件对象属性小结
2010/04/27 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
Bootstrap树形控件使用方法详解
2016/01/27 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
tensorflow学习教程之文本分类详析
2018/08/07 Python
python如何保证输入键入数字的方法
2019/08/23 Python
python 进程池pool使用详解
2020/10/15 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
个人求职信范文
2014/05/24 职场文书
如何写早恋检讨书
2014/09/10 职场文书
2014年环保工作总结
2014/11/26 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
Nginx HTTP跳转至HTTPS
2022/05/15 Servers
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技