vue 阿里云上传组件

摘要:
$/),暂时不支持其他值fileSuffix文件后缀String空字符串keySet阿里云配置项Object详见配置项解释keySet配置项名称意义类型默认值key阿里云的accessKeyIdString空字符串secret阿里云的accessKeySecretString空字符串bucket阿里云的bucketString空字符串region阿里云所在区域Stringshanghai事件名称说明参数error错误事件msgsuccess上传成功,返回路径和拼接的url{ossPath,ossUrl}```˂!
vue 阿里云上传组件 Vue.js上传图片到阿里云OSS存储
测试项目git地址
本测试项目启动方法
示例链接
组件配置项

实践解释

本文主要介绍如何

  1. 在vue项目中使用web
  2. 直传方式上传阿里云oss图片

默认读者对vue框架和阿里云oss有一定的了解
整体的流程是加载好阿里云sdk -> 初始化上传客户端client -> 等待文件选择 -> 文件选择进行上传 -> 分发上传结果
可以直接复制代码使用,也可以npm 组件地址

npm 使用

$ npm i vue-oss-uploader

vue中引用


// main.js 安装插件
import vueOssUploader from 'vue-oss-uploader'
import 'vue-oss-uploader/npm/static/css/vue-oss-uploader.min.css'
Vue.use(vueOssUploader)

具体的配置项请查看组件配置项

配置项

名称意义类型默认值
debug是否开启debug模式Booleanfalse
path保存的路径String空字符串
nameMode文件名方式Number1(1随机名称,2默认名称,3自定义名称)
name自定义名称内容,当nameMode为3时生效String空字符串
fileType文件类型String默认img(会校验文件的后缀,校验正则为/.(pngjpe?ggifsvg)(?.*)?$/),暂时不支持其他值
fileSuffix文件后缀String空字符串(当本项不为空时表示只支持本后缀的文件上传)
keySet阿里云配置项Object详见配置项解释

keySet配置项

名称意义类型默认值
key阿里云的accessKeyIdString空字符串
secret阿里云的accessKeySecretString空字符串
bucket阿里云的bucketString空字符串
region阿里云所在区域Stringshanghai

事件

名称说明参数
error错误事件msg
success上传成功,返回路径和拼接的url{ossPath,ossUrl}
```<!-- html中使用 --> <vueOssUploader :path="path" :debug="true" :name-mode="nameMode" :keySet="keySet" :name="name" v-on:success="uploaded" @error="showError"></vueOssUploader> ```

使用过程中我碰到以下的坑:

1. 本文使用的是js引入形式的阿里云sdk,用npm形式的sdk会需要一些后端的node功能,不能用于web直传。

可以直接在html里面加上script标签

```<script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-4.3.0.min.js"></script> ```
组件里我包装了一个异步获取sdk的方法LoadJS,感兴趣的可以看一下

2. 使用js引入形式的sdk会有一个异步的问题,就是client初始化的时候sdk可能还没加载好,我是在vue的mouted钩子函数内设置了一个定时器,当SDK加载的完成之后再来初始化client


let timer = setInterval(() =&gt; {
  if (window.OSS) {
    this.init()
    clearInterval(timer)
    timer = null
    this.debug &amp;&amp; window.console.log('阿里云oss初始化完成')
  } else {
    this.debug &amp;&amp; window.console.log('阿里云oss初始化中...')
  }
}, 500)

3. 如果你的项目是https环境下的,需要保证初始化client的时候配置secure为true,不然无法上传文件

4. 在默认情况下,保存的图片名会取一个随机的字符串,但是同一张图片多次上传就会保存多个相同图片,这边我做了一个优化,将图片的大小和高宽拼接成一个字符串,再对这个字符串进行md5 hash化处理,这样同一张图片上传多次也只会保存一张

有什么问题或者疑问,请在下方评论或者在github上提issue都可以

参考链接

  1. 阿里云oss文档
  2. vue官网

原文地址:https://segmentfault.com/a/1190000013054033

免责声明:文章转载自《vue 阿里云上传组件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇LiveGBS通过GB28181协议实现监控摄像头云端录像及回看查询,支持WEB直播与回放BitBlt 函数 详解, StretchBlt、SetStretchBltMode、SetBrushOrgEx 按句柄截图、直接截取缩略图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue中使用keepAlive(缓存页面&amp;amp;记忆上次浏览位置)及使用后生命周期的改变

以下部分内容转自博客(另外配有自己见解):https://www.cnblogs.com/nokelong/p/8116631.html 使用keepAlive缓存页面,一可以减少服务器请求次数,二则可以在用户返回上一页后记忆到上次浏览位置(ios端微信浏览器不适用,不兼容,需要另行配置:见例子(1)) keep-alive的介绍如下: 1,把切换出去的组...

----Vue 中mixin 的用法详解----

说下我对vue中mixin的一点理解   vue中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用。最开始我一度认为这个和组件好像没啥区别。。后来发现错了。下面我们来看看mixins和普通情况下引入组件有什么区别?      组件在引用之后相当于在父组件内开辟了一块单独的空间,来根据父组件props过来的值进行相应的操作,单本质上两者还是...

java基本类型数组初始化

1.byte、short、int、long类型数组,数组元素默认初始化为0。 byte[] i= new byte[10]; //short[] i = new short[10]; //int[] i = new int[10];   System.out.println(i); //是一个内存地址   //每个元素都已默认初始化为0   for(in...

vue 嵌套路由

在一个页面中如果想实现三个页面的拼接组成一个页面,这时候就用到嵌套路由了。 第一种方法: 1.顶部页面  /views/Home.vue <template> <el-container> <!-- 顶部 --> <el-header class="headerAll"> &l...

搞懂:MVVM模型以及VUE中的数据绑定数据劫持发布订阅模式

搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : model - view - viewmodel的缩写,说都能直接说出来 model:模型,view:视图,view-Model:视图模型 V:视图,即浏览器最前端渲染的页面 M:模型,数据模型,就是后端页面渲染依赖的数据 VM:稍后再说,因为暂时还不知道怎么工作,什么场景,直接解释有...

win 10 pip Could not find a version that satisfies the requirement selenium (from versions: ) No matching distribution found for selenium

一、当出现这个错误的时候一顿百度。 1.从新卸载Python,安装3.6,还是不行 2.从新卸载pip,单独安装.直接下载get-pip.py文件,执行命令pythonget-pip.py,还是不行 3.也在Python/Script/下回复过文件,不行 4.加上--trusted-host 执行 pip install xrld -ihttps://p...