1. <template>
  2. <div class="vui_alioss_upload">
  3. <div @click="uloadImg()"><slot></slot></div>
  4. <div class="vui_alioss_file">
  5. <input ref="vui_alioss_file" type="file" :id="id" @change="doUpload()"/>
  6. <img :src="url" alt="">
  7. </div>
  8. </div>
  9. </template>
  10.  
  11. <script>
  12. import axios from 'axios'
  13. export default {
  14. name: 'upload',
  15. props:['url'],
  16. data() {
  17. return {}
  18. },
  19. methods: {
  20. uloadImg(){
  21. this.$refs['vui_alioss_file'].click()
  22. },
  23. doUpload(e){
  24. let _this = this,file = this.$refs['vui_alioss_file'].files[0]
  25. if(!file || file.length<1) return
  26. axios({
  27. method: 'get',
  28. url:_this.url,
  29. withCredentials:true
  30. }).then(res=> {return res.data}).then(data=>{
  31. _this.upLoadOss(Object.assign({},data.data,{file:file}))
  32. })
  33. },
  34. upLoadOss(data){
  35. var request = new FormData(),_this= this;
  36. request.append("OSSAccessKeyId",data.accessid);//Bucket 拥有者的Access Key Id。
  37. request.append("policy",data.policy);//policy规定了请求的表单域的合法性
  38. request.append("Signature",data.signature);//根据Access Key Secret和policy计算的签名信息,OSS验证该签名信息从而验证该Post请求的合法性
  39. request.append("key",data.dir+data.file.name);//文件名字,可设置路径
  40. request.append("success_action_status",'200');// 让服务端返回200,不然,默认会返回204
  41. request.append('file', data.file);//需要上传的文件 file
  42. axios({
  43. method: 'post',
  44. url:data.host,
  45. data: request,
  46. }).then(res=> {return res.data}).then(rst=>{
  47. _this.$emit('upLoadImgEnd',data.host+'/'+data.dir+data.file.name)
  48. })
  49. }
  50. }
  51. }
  52.  
  53. </script>
  54.  
  55. <style scoped>
  56. .vui_alioss_upload{display: inline-block;}
  57. .vui_alioss_upload >div{display: inline-block;}
  58. .vui_alioss_upload .vui_alioss_file{height: 0;overflow: hidden}
  59. </style>

  

  1. <FileUpload :url="getassessurl" v-on:upLoadImgEnd="upLoadImgEnd">
  2. <img v-if="imgUrl" :src="imgUrl" alt="">
  3. <p v-if="!imgUrl">点击上传图片</p>
  4. </FileUpload>

  

个人博客 :很多好用的 npm 包 , 可以看看 https://gilea.cn/

github:  https://github.com/longfei59418888/vui   (记得给一个 start,以后有一起讨论,各种好组件)

vue-alioss-组件封装的更多相关文章

  1. Vue 倒计时组件封装

    项目中需要用到倒计时的功能,封装了一个组件. 代码解读: 1:created周期中获取传入参数时间的剩余秒数: this.initSecondsLeft() 并绑定间隔事件 intervalEvent ...

  2. Vue + Element UI 实现权限管理系统 (功能组件封装)

    组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...

  3. Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装

    组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...

  4. seventBus(封装) 一个巧妙的解决vue同级组件通讯的思路

    如果在你项目中需要多处用到同级组件通讯,而又不想去写繁琐的vuex,可以参考这个小思路.本人在写项目中琢磨出来的,感觉挺好用,分享一下. 1.在utils文件夹下添加BusEvent.js 注释已经很 ...

  5. Vue.js 自定义组件封装实录——基于现有控件的二次封装(以计时器为例)

    在本人着手开发一个考试系统的过程中,出现了如下一个需求:制作一个倒计时的控件显示在试卷页面上.本文所记录的就是这样的一个过程. 前期工作 对于这个需求,自然我想到的是有没有现成的组件可以直接使用(本着 ...

  6. vue --》组件的封装 及 参数的传递

    vue组件的定义 ● 组件(Component)是Vue.js最强大的功能之一 ● 组件可以扩展HTML元素,封装可重用代码 ● 在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能 ...

  7. 循序渐进VUE+Element 前端应用开发(20)--- 使用组件封装简化界面代码

    VUE+Element 前端应用,比较不错的一点就是界面组件化,我们可以根据重用的指导方针,把界面内容拆分为各个不同的组合,每一个模块可以是一个组件,也可以是多个组件的综合体,而且这一个过程非常方便. ...

  8. vue cli3.0 封装组件全局引入js文件并发布到npm

    首先用 vue create创建一个项目 当前的项目目录是这样的: 首先需要创建一个 packages 目录,用来存放组件 然后将 src 目录改为 examples 用作示例 二.修改配置 启动项目 ...

  9. vue.js组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...

  10. VUE.JS组件化

    VUE.JS组件化 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎 ...

随机推荐

  1. 在Windows 10 系统上启用Hyper V遇到的错误:0x800f0831

    Hyper-V是微软的一款虚拟化技术,是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术. 在Windows 10的powershell命令里,输入如下的命令 ...

  2. 微信小程序开发系列五:微信小程序中如何响应用户输入事件

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  3. 使用JavaScript将当前页面保存成PDF,支持图片和文字的保存

    前端开发的朋友们可能会遇到这个需求:将您负责开发的网页的全部内容,包括文字和图片,一起保存成一个PDF文件.如果采用屏幕截图的话,默认Windows操作系统的截图按钮无法完整截取超过一屏幕的屏幕内容. ...

  4. Windows程序设计2(消息机制、菜单)

    一 .小记; PostQuitMessage(0); 产生WM_QUIT消息给进程队列,且立即返回,同时使得消息循环退出,使得进程终止.(其实它通过PostMessage(hWnd,WM_QUIT,0 ...

  5. Mybatis(一)入门

    mybatis使用的三个部分数据查询主体 : SqlSession查询映射层 : Mapper接口数据维护层 : Bean 设计一.添加maven依赖<!-- mybatis依赖 -->& ...

  6. 【搜索】P1019 单词接龙

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...

  7. vue+Java 前后端分离,多次请求Session不一致的问题(网络上找的)

    在vue main.js中增加以下配置: import axios from 'axios'; axios.defaults.withCredentials=true; 请求时:设置 withCred ...

  8. QT5:总结篇 控件集合

    一.Layouts 二.Spacers 三.Buttons 四.Item Views(Model-Based) 五.Item Widgets(Item-Based) 六.Containers 七.In ...

  9. 三、C++ const分析

    1.C语言中的const: const修饰的变量是只读的,本质还是变量 const修饰的局部变量在栈上分配空间 const修饰的全局变量在只读存储区分配空间 const只在编译期有用,在运行期无效 c ...

  10. Brackets POJ - 2955

    解法 区间dp例题,每次枚举分段点的时候先更新如果开始到结束区间端点有闭合的括号,那么dp[start][end]=dp[start+1][end-1]+2其他照常枚举即可 代码 #include & ...