vue iview前端直接上传OSS
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的更多相关文章
- vue Base64图片压缩上传OSS
this.compress(result, 800, 0.5).then(val => { //得到压缩图片 let data = val; that.file = that.dataURLto ...
- vue+element+oss实现前端分片上传和断点续传
纯前端实现: 切片上传 断点续传 .断点续传需要在切上上传的基础上实现 前端之前上传OSS,无需后端提供接口.先上完整代码,直接复制,将new OSS里的参数修改成自己公司OSS相关信息后可用,如遇问 ...
- 图片上传oss--先拿server端签名再上传oss,返回id值
目前项目oss阿里云存储图片,图片上传主要步骤是:前端从服务端拿到签名signature,再上传到oss上busket里,上传成功返回图片id (imgId),最后再给server端: 注:官网上有个 ...
- vue之element-ui文件上传
vue之element-ui文件上传 文件上传需求 对于文件上传,实际项目中我们的需求一般分两种: 对于单个的文件上传,比如拖动上传个图片之类的,或者是文件. 和表单一起实现上传(这种情况一般都是 ...
- vue+axios+elementUI文件上传与下载
vue+axios+elementUI文件上传与下载 Simple_Learn 关注 0.5 2018.05.30 10:20 字数 209 阅读 15111评论 4喜欢 6 1.文件上传 这里主要 ...
- web前端图片上传(3)--filereader
这篇文章主要是为了介绍一种文件上传的方式.当然文件中是包含图片的.如果大家仔细看我的第一篇web前端图片上传(1)就会知道,其实也是按照这种方式上传你的,但是由于上次时间比较紧张,没有详细的介绍今天的 ...
- 项目总结21:项目总结21:input实现多图上传(FormData)(上传OSS并保存数据库)
项目总结21:input实现多图上传(FormData)(上传OSS并保存数据库) 备注:本案例,作为Demo,包含少量的项目业务逻辑,input多图上传的逻辑是完整的: 不废话直接上代码 1-前端标 ...
- jq实现前端文件上传
FormData FormData是XMLHttpRequest Level 2 新增的一个接口. 使用FormData可以实现各种文件上传. 使用 // 创建FormData的实例 var form ...
- 七牛云存储的 Javascript Web 前端文件上传
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,七牛云存储的 Web 前端文件上传 七牛是不错的云存储产品,特别是有免费的配额可 ...
- 前端js上传文件后端C#接收文件
本文粗略的讲下前端文件上传和后端文件接收的原理 前端代码 html <form onsubmit="uploadFile(event)"> <input type ...
随机推荐
- UE4常用快捷键
编辑器快捷键 按键 操作 W 选择"移动"工具 E 选择"旋转"工具 R 选择"缩放"工具 F 聚焦对象 End 落到地面 Alt + En ...
- Vue 局部过滤器和全局过滤器
Vue 过滤器总结: 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理) 语法: 1.注册过滤器: Vue.filter(name,callback) 或 new Vue{filt ...
- Office & WPS 基础篇
基础知识 安装office 推荐使用Microsoft Office,原因不详,不做讨论 使用Office tool plus安装,不要三年前版本,一般三年一代,工具自己找,版本文件自己找. 具体选项 ...
- ping Hyper-V内虚拟机网络延迟
- 整合log4j
引入依赖 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId& ...
- 统计包含关键字的 Key 的数量
- PLSQL中文乱码问题(显示问号)解决办法
select userenv('language') from dual; 在环境变量的系统变量中添加配置: NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK 这个 ...
- Dockerfile 参考
Dockerfile:FROM openjdk:8u252-jdkENV JHIPSTER_SLEEP=0 \ JAVA_OPTS="" \ LOGFILE="" ...
- java使用array是copyof创建新长度数组
Arrays.copyof() int[] copied = Arrays.copyOf(arr, 10); //10 the the length of the new array System.o ...
- 2022-3-17内部群每日三题-清辉PMP
1.一个项目预算为6000万美元,预计需要24个月才能完成.12个月后,该项目完成了60%,并使用了3500美元.那么预算和进度的状态如何? A.符合预算,并超前于进度 B.超出预算,但超前于进度 C ...