关于使用elementUI直传七牛云上传 and 下载踩坑
Posted yanyanp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于使用elementUI直传七牛云上传 and 下载踩坑相关的知识,希望对你有一定的参考价值。
这几天一直研究七牛云的,,由于本人对elementUI框架的不熟悉,,踩了很多坑。
首先需要注册一个七牛云,最近快赶上双十一,所以七牛云新用户价格低廉500G*6个月只用了一分钱,废话不多说直接上代码。
先说说上传
前端使用elementUI的<el-upload>组件:
<el-upload action="http://upload-z2.qiniup.com" :http-request="sliderRequest" :name="fileName" :before-upload="handleUpload" :drag="true" :on-success="handleAvatarSuccess" :on-error="handleError" :on-remove="handleRemove">
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em> </div>
</el-upload>
划个重点好吗,,这里的action用的是七牛上传的地址,,,是你创建的空间在哪个区,我的是华南所以是这个,,敲黑板,这里一定不是加域名那个地址,,我就是这个地方卡了很久,
不得不说elementUI还是很强大的,所以以上组件绑定的函数直接看官方文档就好了,
我这里主要有作用的是http-request函数和before-upload,http-request是上传函数,覆盖默认的上传,因为想发现如果不给固定的key,那上传到七牛云之后文件类型发生了改变,所以我这里自定义了上传函数,,这个函数还是我百度的,至于具体是哪个链接记不清了。
sliderRequest(upload) {
// 文件上传自行处理上传
// 创建FormData对象 添加相关上传参数
const formData = new FormData()
// 文件对象
formData.append(‘file‘, upload.file)
// key 文件名处理,这样的话七牛会识别文件时什么类型
formData.append(‘key‘, upload.file.name)
// token
formData.append(‘token‘, this.postData.token)//这个postData,要在data数据里面进行定义的,,,我这里调接口使用的是vue的方式
// 上传文件
// onUploadProgress 查看axios文档 https://github.com/axios/axios
axios.post("http://upload-z2.qiniup.com", formData, {
onUploadProgress: (event) => {
// 监听上传进度
event.percent = event.loaded / event.total * 100
upload.onProgress(event)
}
}).then((response) => {
const res = response.data
if (res.code === 200) {
_this.handleAvatarSuccess();
}
}).catch((err) => {
// 调用组件上传失败方法
_this.handleError();
})
},
handleUpload(file) {
this.fileName = file.name;
this.addFormInfo.appendixUrl = "http://cdn.pinea.club/" + file.name;
this.updateFormInfo.appendixUrl = "http://cdn.pinea.club/" + file.name;
}
before-upload是上传时的函数,我这里时间添加到数据库的文件地址字段进行了修改,,这里的地址就是带域名的那个了,
下载就很简单,一个<a>标签链接一个文件地址即可搞定
<a v-if="contractInfo.appendixUrl!=null" class=‘download‘ :href=‘contractInfo.appendixUrl‘ download title="下载">下 载</a>
java后台的token接口:
@RequestMapping(value = "/getQiniuUpToken",produces = { "application/json;charset=UTF-8" })
@ResponseBody
public Response getQiniuUpToken() {
Response response = new Response();
try {
response.setResult(1);
response.setModel(auth.uploadToken(bucketname, null, 3600, new StringMap().put("insertOnly", 1)));
log.info("getQiniuUpToken result:"+response.getResult());
} catch (Exception e) {
log.error("getQiniuUpToken 接口异常",e);
response.setResult(ResultCodeEnum.FAILURE.code);
response.setFailCode(ErrorCodeEnum.SYSTEM_EXCEPTION.errorCode);
response.setFailReason(ErrorCodeEnum.SYSTEM_EXCEPTION.errorDesc);
}
return response;
}
大家一起学习交流
以上是关于关于使用elementUI直传七牛云上传 and 下载踩坑的主要内容,如果未能解决你的问题,请参考以下文章
初试“七牛云”--零基础运用七牛云配合UEditor实现图片的上传和浏览(.NET篇)
富文本vue-quill-editor结合element UI--upload做图片上传至七牛云服务器(含node后端)