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 ...
随机推荐
- 大道至简读后感以及JAVA伪代码
<大道至简>这本书引用<愚公移山>一文,生动完美的诠释了编程的整个过程.在两千年前的寓言中,愚公集项目组织者.团队经理.编程人员.技术分析师等众多角色于一身.首先是原始需求的产 ...
- ABAP链接FTP把txt文件数据获取到内表
啥都不说,直接上代码 ******* 如果无法链接FTP,可能需要往表SAPFTP_SERVERS加入IP地址和端口(21)即可 DATA:p_host TYPE char64 VALUE 'IP', ...
- el-input 限制输入框只能输入数字和小数
方法一: oninput ="value=value.replace(/[^\d]/g,'')" //只能输入数字 oninput ="value=value.repla ...
- LaTex【六】表格排版—表格标题位置
LaTex中表格排版--表格描述位置调整 LaTex模板大多默认将表格描述置于表格下方,可通过修改 \caption 的位置调整. 1. 位于表格下方(默认) \begin{table}[h] \be ...
- vue基础 · 过滤器(3)
过滤器:filter Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以使用在2个地方:{{ }} 插值 和 v-bind 表达式(后者从 2.1.0+ 开始支持) 过滤器分为 ...
- PHP基础教程(二)
本部分列出了在 PHP 中使用的各种运算符:算数运算符 运算符 说明 例子 结果 + Addition x=2x+2 4 - Subtraction x=25-x 3 * Multiplication ...
- ASP.NET Core中使用日志组件NLog
上一篇文章描述了如何在ASP.NET Core中使用Log4Net记录日志.本篇将使用另外一个组件NLog在ASP.NET Core中记录日志. 1.引入程序集 NLog.Web.AspNetCore ...
- canvas合并图片并长按保存
代码实现 <div class="pho-bg"> <img src="../../assets/images/FeedbackActivity/pos ...
- SignalR基本认识以及使用
SignalR基本认识以及使用 什么是WebSocket.SignalR WebSocket 1.WebSocket基于TCP协议,支持二进制通信,双工通信. 2.性能和并发能力更强. 3.WebSo ...
- QTableWidget设置表头标题不成功
上网查说是由于在设置标题之前没有设置列数,但是我的是设置了列数的,最后发现是由于我在设置数据的时候把标题删除了,清除QTableWidget的方法有两种,clear()和clearContents() ...