element中文件上传
vue+element 文件操作
作者:一粒尘土 时间:2019-3-17 注:以下操作针对 vue-cli
目录
使用
- 使用npm安装Element-ui 依赖
$ npm i element-ui -S
- 配置vue中的 main.js 文件中添加如下代码
import ElementUI from 'element-ui' // 引入element
import 'element-ui/lib/theme-chalk/index.css' // 引入css样式
Vue.use(ElementUI) // 中间件全局注册
组件常用参数
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|---|---|---|---|---|
| action | 必选参数,上传的地址 | string | - | - |
| multiple | 是否支持多选文件 | boolean | - | - |
| data | 上传时附带的额外参数 | object | - | - |
| accept | 接受上传的文件类型 | string | - | - |
| on-preview | 点击文件列表中已上传的文件时的钩子 | function(file) | - | - |
| on-remove | 文件列表移除文件时的钩子 | function(file, fileList) | - | - |
| on-success | 文件上传成功时的钩子 | function(response, file, fileList) | - | - |
| on-error | 文件上传失败时的钩子 | function(err, file, fileList) | - | - |
| on-progress | 文件上传时的钩子 | function(event, file, fileList) | - | - |
| on-change | 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用 | function(file, fileList) | - | - |
| before-upload | 上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传 | function(file) | - | - |
| before-remove | 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 reject,则停止上传 | function(file, fileList) | - | - |
| auto-upload | 是否在选取文件后立即进行上传 | boolean | - | true |
| file-list | 上传的文件列表, 例如: [{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}] | array | - | [] |
| limit | 最大允许上传个数 | number | - | - |
组件常用方法
| 参数 | 说明 | 参数 |
|---|---|---|
| clearFiles | 清空已上传的文件列表(该方法不支持在 before-upload 中调用) | - |
文件上传
在进行文件上传时,因为需要的不同,所以可分为 即时上传,延时上传 两种情况
即时上传:选中文件之后立即上传
说明:文件上传时action属性为文件上传的地地址,如果上传文件时需要携带参数,可放在data属性中(对象格式)
<el-upload
class="upload-demo"
ref="upload"
action="/System/fileUpload.mvc" // 上传文件的地址
:on-change="getFiles" // 文件改变时调用的钩子函数
multiple // 是否支持上传多条文件
:data="addFilesDate" // 上传文件时携带的参数
:file-list="fileList"> // 上文文件的列表
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
延时上传:可用于表单操作时传递文件,在表单信息保存完毕后上传文件操作
说明:延时上传需要依靠auto-upload属性来设置文件是否即时上传,默认值为 true,如果设置为false时,选择文件之后不会上传文件,我们可在需要上传文件时调用如下方法即可上传文件
$ this.$refs.upload.submit() // 上传文件操作
<el-upload
class="upload-demo"
ref="upload"
action="/System/fileUpload.mvc"
:on-change="getFiles"
multiple
:data="addFilesDate"
:file-list="fileList"
:auto-upload="false"">
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
上传文件格式限制
在上传文件附件的时候,因为需求不同,所以对于文件格式的限制也有所不同,在这里可以使用accept(接收文件类型),但是仅仅使用该属性并不能完全限制用户的选择,此时我们可以结合 before-upload函数来进行限制,如此即可真正的限制文件上传时的格式限制
<el-upload
class="upload-demo"
ref="upload"
action="/System/fileUpload.mvc"
:on-change="getFiles"
:before-upload="beforeUpload" // 文件上传前的回调
multiple
:accept=".doc, .docx, .xls, .xlsx" // 接收的文件类型
:data="addFilesDate"
:file-list="fileList">
<el-button size="small" type="primary">选择文件</el-button>
添加:我在这里写了个方法,可以在before-upload函数中调用 this.fileUploadSuffix(fileList, suffix),来判断用户选择的问价是否是符合后缀的,代码如下
/**
* 文件上传 限制格式
* @param fileList 文件列表( 数组)
* @param suffix 文件格式限制(字符串)".doc, .docx, .wps"
* @param blooean 返回值
*/
Vue.prototype.fileUploadSuffix = function (fileList, suffix) {
let blooean = null
for (let i in fileList) {
let item = fileList[i] // 某一条文件信息
let fileName = item.name.lastIndexOf('.') // 取到文件名开始到最后一个点的长度
let fileNameLength = item.name.length // 取到文件名长度
let hz = item.name.substring(fileName + 1, fileNameLength) // 获取上传文件的后缀名
// 判断文件名后缀是否合法
if (suffix.indexOf(hz) === -1) { // 不合法上传文件
// 删除上传的文件列表中的不合法文件类型
fileList.splice(i--, 1) // 删除列表中的数据(删除后文件调整)
// 弹窗显示判断
blooean = true
}
}
return blooean // 返回参数
}
回显文件
根据element文档可知,储存文件上传的属性为 fileList ,我们只需将接受的参数,按照fileList的name属性附上值,即可回显我们需要的格式,当然我们也可以添加替他属性,用来进行下载删除等操作
| 属性值 | 参数 |
|---|---|
| name | 文件名称 |
| url | 文件上传的路径 |
下载文件
在element的 upload 组件中有一个属性可让我们用来进行文件的下载 on-preview(点击文件列表中已上传的文件时的钩子),然后在该函数中调用window.open(url) 方法 url 下载文件的地址
删除文件
在页面回显之后,也会有删除文件的操作,此时我们可以使用该组件中的 on-remove(文件列表移除文件的操作)属性 ,再调用该参数的时候文件列表中的数据将会被删除,这种效果并不是很好,由此我们可以使用 before-remove 来进行删除文件的操作,如果用户选择确定删除时,我们再去调用删除文件的接口,在删除成功之后,我们在进行页面上列表的屋里删除,就好了
<!--html代码-->
<el-upload
:befor-remove="beforRemove"
></el-upload>
<!--js代码-->
beforeRemove (file, fileList) {
this.$alert(`确定移除该文件?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.deleteFile(file, fileList)
}).catch(() => {
this.$message({
type: 'info',
message: '取消删除操作'
})
})
return false
},
deleteFile (file, fileList) {
let file = file
let fileList = fileList // 接收文件
this.post(() => {
url: '', // 删除文件的接口
data: {} // 传递的参数
}, (res) => {
// 删除成功,更新页面中的文件列表信息
})
}
欢迎大家关注我的微信公众号,一起学习一起进步
代码小书生
element中文件上传的更多相关文章
- jsp\struts1.2\struts2 中文件上传(转)
jsp\struts1.2\struts2 中文件上传 a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现c.在sturts2中实现现在把Code与大家 ...
- easyui-dialog中文件上传处理
function openDialog() { // $('#dlg').dialog('open'); //EasyUi的dialog中文件上传,后台获取不到文件,需要改写为下面这样 $(" ...
- layUI框架中文件上传前后端交互及遇到的相关问题
下面我将讲述一下我在使用layUI框架中文件上传所遇到的问题: 前端jsp页面: <div class="layui-form-item"> <label cla ...
- JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。
JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了.因为tomc ...
- ASP.NET:MVC中文件上传与地址变化处理
目录 文件的上传和路径处理必须解决下面列出的实际问题: 1.重复文件处理 2.单独文件上传 3.编辑器中文件上传 4.处理文章中的图片路径 5.处理上传地址的变化 一.上传文件和重复文件处理 文件处理 ...
- C# 之 FTPserver中文件上传与下载(二)
通过上一篇博客<C# 之 FTPserver中文件上传与下载(一)>,我们已经创建好了一个FTPserver,而且该server须要username和password的验证 ...
- 【技术博客】 关于laravel5.1中文件上传测试的若干尝试
关于laravel5.1中文件上传测试的若干尝试 作者:ZGJ 版本:v1.0 PM注:本人这两天也正在尝试解决这一问题,如有进展将及时更新这一博客 在我们的软工第二阶段中,我开始着手进行后端控制器的 ...
- VUE项目中文件上传兼容IE9
项目使用VUE编写,UI是ElementUI,但是Element的Upload组件是不兼容IE9的.因为IE9中无法使用FormData. 查找资料基本有两种解决方法:1.引入JQuery和jQuer ...
- Struts中文件上传的一些规则...
1.action中定义规范 如果jsp中file的name="xxx",那么后台action中的属性要做相应更改为 private File xxx; private String ...
随机推荐
- 3.2、Factorization Machine实践
1.在上一篇博客中我们构建度为二的因子分解机模型,这篇博客对这个模型进行实践 下图为准备的数据集: 完整代码为: # -*- coding: UTF-8 -*- # date:2018/6/6 # U ...
- TX2 五种功耗模式
工作模式介绍 Jetson TX2由一个GPU和一个CPU集群组成,CPU集群由双核丹佛2处理器和四核ARM Cortex-A57组成,通过高性能互连架构连接. 拥有6个CPU核心和一个GPU,您可以 ...
- 修改testng源码,添加beforeMethod和afterMethod中的日志到test中(可以不改源码,废弃)
在使用testng生成报告的时候,只会记录test方法中的日志,但是一般会在beforeMethod.beforeTest.afterMethod.afterTest中做一下数据的处理,这里面的日志没 ...
- VMware安装黑威联通教程+文件 亲身测试成功 老骥伏枥黑威联通母盘QNAP1G-BOOT 1G
1.首先致敬老骥伏枥大神的帖子. [老骥伏枥-原创]制作黑威联通启动盘:进阶篇 2.其次感谢这位作者的安装教程 作者:f541883216 [老骥伏枥-原创]用我的黑威联通启动盘在WMware搭建系统 ...
- [Alpha]Scrum Meeting#4
github 本次会议项目由PM召开,时间为4月5日晚上10点30分 时长20分钟 任务表格 人员 昨日工作 下一步工作 木鬼 调整&分配工作 撰写博客目录 SiMrua 手工建立再训练数据( ...
- [原创]VMware Workstation 14.1.3 Pro安装CentOS_7.6.1810
前言 Linux作为最主流的服务器操作系统,在市场上的使用占比保持着领先对位.其中CentOS作为基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本,在企业的服务器中,也 ...
- nodejs的process.on('message')转promise
// main.js const cp = require('child_process'); const child = cp.fork('./child.js'); const callbackP ...
- XAMPP中Apache和Mysql启动失败问题总结
一.Apache启动失败 xampp启动时显示的错误为: 9:52:41 [Apache] Attempting to start Apache app... 9:52:41 [Apache] ...
- MySQL获取字段的片段
如表中有很多这样的数据: TEST-123,TEST-III 这种以 TEST开头的数据,为了统计其总数 可以使用mysql自带的方法 substring_index()方法 第一个参数是列的内容, ...
- 登录mysql 报 Access denied for user 'root'@'localhost' 错误
安装mysql后登录提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:yes) 解决如下 ...