1. 首先安装oss

npm install ali-oss --save

2.

// template部分
<Upload
ref="upload"
type="drag"
:default-file-list="file"
action=""
:before-upload="handleBeforeUpload"
:on-preview="handlePreview"
:on-remove="handleRemove"
:accept="accept"
with-credentials>
<div style="padding: 20px 0">
<Icon type="ios-cloud-upload" size="52" style="color: #3399ff"></Icon>
<p>点击或拖拽上传文件</p>
</div>
</Upload>
<Progress :percent="uploadPercent" v-if="isPercent"/>

3. script部分

<script>
export deault {
data () {
return {
file: [],
accept: 'video/*',
ossConfig: {},
ossInfo: {},
isPercent: false,
uploadPercent: 0,
format:[],
maxSize: 1 * 1024 * 1024
}
},
methods: {
// 获取上传凭证
async getUploadToken () {
// 通过后端接口获取上传基本信息
const res = await getUploadInfo(params)
this.ossConfig = {
region: res.data.region_id,
accessKeyId: res.data.AccessKeyId,
accessKeySecret: res.data.AccessKeySecret,
stsToken: res.data.SecurityToken,
bucket: res.data.bucket,
secure: true
}
this.ossInfo = {
Expiration: res.data.Expiration,
dir: res.data.dir,
domain: res.data.domain,
filename: res.data.filename
}
},
// 定义上传方法。
async multipartUpload (filename, file) {
try {
const result = await
this.client.multipartUpload(`${this.ossInfo.dir}${this.ossInfo.filename}.${this.fileSuffix}`, file, {
headers: {
'Content-Disposition': 'inline',
'Content-Type': this.fileType
},
progress: (p, checkpoint) => {
this.isPercent = true
this.uploadPercent = Number((p * 100).toFixed(2))
// checkpoint参数用于记录上传进度,断点续传上传时将记录的checkpoint参数传入即可。浏览器重启后无法直接继续上传,您需要手动触发上传操作。
this.tempPoint = checkpoint
},
parallel: 10,
// 设置分片大小 默认是1M,这里设置5M
partSize: 1024 * 1024 * 5,
mime: this.fileType
})
if (result.res.statusCode !== 200) {
this.$Message.error('文件上传失败')
return false
}
this.file = [
{
name: this.fileName,
url: this.ossInfo.domain + result.name
}
]
this.$Message.success(`文件上传成功`)
this.isPercent = false
} catch (e) {
this.$Message.error('文件上传失败')
this.isPercent = false
}
},
// 上传前处理
handleBeforeUpload (file, fileList) {
this.fileSuffix = file.name.split('.').pop()
this.fileName = file.name
this.fileType = file.type
if (!this.format.includes(this.fileSuffix)) {
this.$Message.error(`上传文件仅支持${this.format.toString()}格式`)
return false
}
if (file.size > this.maxSize) {
this.$Message.error(`当前上传文件最大不能超过100M`)
return false
}
this.client = new OSS(this.ossConfig)
this.multipartUpload(file.name, file)
return false
},
}
} </script>

vue iview前端直接上传OSS的更多相关文章

  1. vue Base64图片压缩上传OSS

    this.compress(result, 800, 0.5).then(val => { //得到压缩图片 let data = val; that.file = that.dataURLto ...

  2. vue+element+oss实现前端分片上传和断点续传

    纯前端实现: 切片上传 断点续传 .断点续传需要在切上上传的基础上实现 前端之前上传OSS,无需后端提供接口.先上完整代码,直接复制,将new OSS里的参数修改成自己公司OSS相关信息后可用,如遇问 ...

  3. 图片上传oss--先拿server端签名再上传oss,返回id值

    目前项目oss阿里云存储图片,图片上传主要步骤是:前端从服务端拿到签名signature,再上传到oss上busket里,上传成功返回图片id (imgId),最后再给server端: 注:官网上有个 ...

  4. vue之element-ui文件上传

    vue之element-ui文件上传 文件上传需求 ​ 对于文件上传,实际项目中我们的需求一般分两种: 对于单个的文件上传,比如拖动上传个图片之类的,或者是文件. 和表单一起实现上传(这种情况一般都是 ...

  5. vue+axios+elementUI文件上传与下载

    vue+axios+elementUI文件上传与下载 Simple_Learn 关注  0.5 2018.05.30 10:20 字数 209 阅读 15111评论 4喜欢 6 1.文件上传 这里主要 ...

  6. web前端图片上传(3)--filereader

    这篇文章主要是为了介绍一种文件上传的方式.当然文件中是包含图片的.如果大家仔细看我的第一篇web前端图片上传(1)就会知道,其实也是按照这种方式上传你的,但是由于上次时间比较紧张,没有详细的介绍今天的 ...

  7. 项目总结21:项目总结21:input实现多图上传(FormData)(上传OSS并保存数据库)

    项目总结21:input实现多图上传(FormData)(上传OSS并保存数据库) 备注:本案例,作为Demo,包含少量的项目业务逻辑,input多图上传的逻辑是完整的: 不废话直接上代码 1-前端标 ...

  8. jq实现前端文件上传

    FormData FormData是XMLHttpRequest Level 2 新增的一个接口. 使用FormData可以实现各种文件上传. 使用 // 创建FormData的实例 var form ...

  9. 七牛云存储的 Javascript Web 前端文件上传

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,七牛云存储的 Web 前端文件上传 七牛是不错的云存储产品,特别是有免费的配额可 ...

  10. 前端js上传文件后端C#接收文件

    本文粗略的讲下前端文件上传和后端文件接收的原理 前端代码 html <form onsubmit="uploadFile(event)"> <input type ...

随机推荐

  1. Docker学习笔记-03 容器数据卷

    1.宿主 vs容器直接映射数据容器卷 docker run -it  --privileged=true  -v  /宿主机绝对路径目录 :/ 容器内目录   镜像名 eg:  docker run  ...

  2. 【FPGA & Verilog】手把手教你实现一个DDS信号发生器

    信号发⽣器的设计与实现 1.输出波形:⽅波(占空⽐50%).锯⻮波.三⻆波.脉冲信号(占空⽐连续可调).正弦波.任意波等 2.输出频率:100KHz 3.波形选择:使⽤拨码开关选择   思路: 使用F ...

  3. 关于osqp

    看了osqp的英文概要,记录如下: 1.采用交替方向乘子法 2.通过因式分解高速缓冲和热启动可以减少运算时间 3.适合嵌入式系统,实测mpc在10ms之内,路径规划在20ms左右(少障碍物),障碍物多 ...

  4. highcharts冷门功能总结

    1.散点图控制点的样式. Highcharts.chart('container', { series: [{ type: "scatter", marker: { fillCol ...

  5. spring-boot 引入redis

    1.引入redis <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  6. gym102586C Sum Modulo

    题意: 给你 \(n,m,k\) 以及\(p_i(1\le i\le n)\) ,保证 \(\sum p_i=1\) 你有一个数 \(X\),一开始 \(X=0\) 每次你会生成一个随机数 \(A\) ...

  7. vue provide inject 方法

    上级组件: provide() { return { changeSelectOptions: this.changeSelectOptions, switchTabs: () => this. ...

  8. 2020ICPC上海I - Sky Garden

    思维 [I-Sky Garden_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)(重现赛)@hzy0227 (nowcoder.com)](https://codeforces.co ...

  9. 帮你躲坑:pip install tensorflow 报错怎么办,import tensorflow 报错怎么办?

    补一补:什么是TensorFlow? 一句话介绍: Google 开源的基于数据流图的科学计算库,适合用于机器学习.深度学习等人工智能领域 百度百科的介绍: TensorFlow是谷歌基于DistBe ...

  10. nginx 负载均衡时,一台tomcat宕机时的问题 自动切换

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...