码迷,mamicode.com
首页 > Web开发 > 详细

关于使用elementUI直传七牛云上传 and 下载踩坑

时间:2019-11-02 11:50:51      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:调用   用户   传参   数据   pre   ring   end   filename   mod   

这几天一直研究七牛云的,,由于本人对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 下载踩坑

标签:调用   用户   传参   数据   pre   ring   end   filename   mod   

原文地址:https://www.cnblogs.com/yanyanp/p/11781048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!