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. VS2019+ Intel Fortran (oneAPI)+HDF5库的安装+测试

    最近需要读取hdf5文件(*.h5),处于对速度的追求,兼具VS调试程序的需要,使用Fortran+HDF5进行读写. 注意: 此处为动态库连接方式,静态库类似,差异主要为头文件有所差异. 参考网址: ...

  2. Windows10 Vmware安装Centos虚拟机

    准备工作 安装Vmware软件 下载地址:https://www.vmware.com/cn/products/workstation-pro.html 下载Centos7 镜像 下载地址:https ...

  3. 我和Java这些年的故事(六)

    从2006年开始,我就在建设自己的网站,从2008年到2011年,我托管了四年自己的服务器,那时阿里云还没有兴起,只能自己买服务器,放到托管商机房里去,他们给你一个IP.机器全部是自己运维. IBM内 ...

  4. ALV值存放图标

    SPAN { font-family: "新宋体"; font-size: 12pt; color: rgba(0, 0, 0, 1); background: rgba(255, ...

  5. banner的使用

    Android中banner的使用步骤 Step 1.依赖banner Gradle dependencies{ compile 'com.youth.banner:banner:1.4.9' //最 ...

  6. Python3 学习基础知识

    python是动态语言(对象属性可以动态改变,删除添加..),不是强类型语言,所以和java,c/c++等强类型静态语言有不一样地方需要注意. 一:基本数据类型 变量 counter = 1   # ...

  7. const引用和指针

    1.可以为const引用初始化一个非const的对象.字面值,甚至是一般表达式. 2.对引用初始化时必须严格进行类型匹配,但是const引用初始化时不需要类型匹配,只要可以转换为const所定义的类型 ...

  8. iOS开发之运行报错 dyld: Library not loaded: *** Reason: image not found

    xcode运行报错 dyld: Library not loaded: @rpath/Flutter.framework/Flutter   Referenced from: /private/var ...

  9. 移动端及pc端适配

    1.rem搭配CSS预处理器使用 这里我就用vue+less来简单操作一下,具体可以封装到底层,这里暂且演示一下原理. 这里推荐一下使用我的自制脚手架 (songyao-cli) 来快速生成一个vue ...

  10. rabbitmq 使用管理页面向队列中推送消息

    参考:https://blog.csdn.net/weixin_43343423/article/details/103382661