目录
- 一、代码实现(具体配置文档(https://element.eleme.cn/#/zh-CN/component/upload))))
-
- [1. 默认图片上传](#1. 默认图片上传)
- [2. 自定义图片上传](#2. 自定义图片上传)
- [3. 默认文件上传](#3. 默认文件上传)
- 二、效果图
一、代码实现(具体配置文档)
1. 默认图片上传
-
适用于:文件上传接口只要求file二进制文件,无需其他参数。(或者配置data属性用于上传时附带的额外参数)。
-
该实现方式会在选择完图片后就根据配置好的action的接口上传地址自动上传图片。
-
重点就是配置好action属性,以及限制类型和大小。
<!-- 上传提示 --> <div v-if="showTip" slot="tip" class="el-upload__tip"> 请上传 <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template> <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join('/') }}</b> </template> 的文件 </div> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="isVisible" title="预览" width="800" append-to-body > <img :src="dialogImageUrl" style="display: block; max-width: 100%; margin: 0 auto" /> </el-dialog> </div>2. 自定义图片上传
-
不需要配置action,使用http-request 覆盖默认的上传行为,可以自定义上传的实现。适用于文件上传需要file文件和其他参数。
-
或者在http-request的方法中不做任何操作,在before-upload上传前的校验中,保存将要上传的文件file,然后页面根据实际需要,调用方法上传图片。(如在页面中加一个提交按钮,点击调用提交方法上传图片)。
-
重点简单了解FormData 的使用和Content-Type的类型
// 可以根据后台接口要求来决定参数的类型
onChange() {
//通常文件上传是要用 FormData 格式的
this.formdata = new FormData()
this.formdata.append('file', this.file)
this.formdata.append('name', this.name)
},
// this.formdata 就是要传给后台的参数了 -
multipart/form-data支持文件上传的格式,一般需要上传文件的表单则用该类型。
// 头像上传
// export function uploadAvatar(data) {
// return request({
// url: '/manager/user/uploadAvatar',
// method: 'post',
// data: data,
// headers: {
// 'Content-Type': 'multipart/form-data'
// }
// })
// }请上传 大小不超过 {{ fileSize }}MB 格式为 {{ fileType.join("/") }} 的文件<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" title="预览" width="800" append-to-body > <img :src="isVisible" style="display: block; max-width: 100%; margin: 0 auto" /> </el-dialog>
3. 默认文件上传
-
和上述图片上传是一样的原理,只不过是限制的类型不一样。
选取文件 请上传 大小不超过 {{ fileSize }}MB 格式为 {{ fileType.join("/") }} 的文件<!-- 文件列表 --> <transition-group class="transition-box" tag="ol"> <li v-for="(file, index) in fileList" :key="index" class="upload-item-box"> <div class="upload-item"> <div> <el-link> <span class="el-icon-document" style="margin-left: 10px"> {{ file.name }} </span> </el-link> </div> <div> <el-link :underline="false" class="look" type="primary" @click="handlePrew(file)"> <span class="el-icon-view"> 查看 </span> </el-link> <div class="delBox" v-if="showDing"> <el-link v-if="index > number - 1" class="el-icon-delete link" :underline="false" type="danger" @click="handleDelete(index)">删除</el-link> </div> </div> </div> </li> </transition-group>
二、效果图


-