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中文件上传的更多相关文章

  1. jsp\struts1.2\struts2 中文件上传(转)

    jsp\struts1.2\struts2 中文件上传 a.在jsp中简单利用Commons-fileupload组件实现 b.在struts1.2中实现c.在sturts2中实现现在把Code与大家 ...

  2. easyui-dialog中文件上传处理

    function openDialog() { // $('#dlg').dialog('open'); //EasyUi的dialog中文件上传,后台获取不到文件,需要改写为下面这样 $(" ...

  3. layUI框架中文件上传前后端交互及遇到的相关问题

    下面我将讲述一下我在使用layUI框架中文件上传所遇到的问题: 前端jsp页面: <div class="layui-form-item"> <label cla ...

  4. JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了。

    JFinal中文件上传后会默认放置到WebContent的upload包下,但是tomcat会自动重启,当我们再次打开upload文件夹查看我们刚刚上传的文件时,发现上传的文件已经没有了.因为tomc ...

  5. ASP.NET:MVC中文件上传与地址变化处理

    目录 文件的上传和路径处理必须解决下面列出的实际问题: 1.重复文件处理 2.单独文件上传 3.编辑器中文件上传 4.处理文章中的图片路径 5.处理上传地址的变化 一.上传文件和重复文件处理 文件处理 ...

  6. C# 之 FTPserver中文件上传与下载(二)

            通过上一篇博客<C# 之 FTPserver中文件上传与下载(一)>,我们已经创建好了一个FTPserver,而且该server须要username和password的验证 ...

  7. 【技术博客】 关于laravel5.1中文件上传测试的若干尝试

    关于laravel5.1中文件上传测试的若干尝试 作者:ZGJ 版本:v1.0 PM注:本人这两天也正在尝试解决这一问题,如有进展将及时更新这一博客 在我们的软工第二阶段中,我开始着手进行后端控制器的 ...

  8. VUE项目中文件上传兼容IE9

    项目使用VUE编写,UI是ElementUI,但是Element的Upload组件是不兼容IE9的.因为IE9中无法使用FormData. 查找资料基本有两种解决方法:1.引入JQuery和jQuer ...

  9. Struts中文件上传的一些规则...

    1.action中定义规范 如果jsp中file的name="xxx",那么后台action中的属性要做相应更改为 private File xxx; private String ...

随机推荐

  1. 2016级算法第四次上机-B ModricWang的序列问题

    1019 ModricWang的序列问题 思路 此题题意非常清晰,给定一个序列,求出最长上升子序列的长度.从数据规模来看,需要\(O(nlogn)\) 的算法. \(O(nlongn)\) 求最长上升 ...

  2. 906 AlvinZH的奇幻猜想----整数乘积(背包DP大作战O)

    906 AlvinZH的奇幻猜想----整数乘积 思路 难题.动态规划. 将数字串按字符串输入,处理起来更方便些. dp[i][j]:表示str[0~i]中插入j个乘号时的乘积最大值.状态转移方程为: ...

  3. 2016级算法第一次练习赛-D.AlvinZH的儿时回忆——跳房子

    864 AlvinZH的儿时回忆----跳房子 题目链接:https://buaacoding.cn/problem/864/index 思路 这是一道简单题,但是同样有人想复杂了,DP?大模拟?. ...

  4. TP5.0学习历程(1)

    验证码的使用 控制器代码如下: $captcha = new \think\captcha\Captcha();         if (!$captcha->check($data['code ...

  5. Flutter 实现退出登录功能,应用退出到登录界面 | 返回应用首页

    1. 使用场景:退出登录./// 路由作用:移除 [ModalRoute.withName("/loginPage")] 除外的所有界面,并跳转到 ["/loginPag ...

  6. 论文阅读 | CenterNet:Object Detection with Keypoint Triplets

    相关链接 论文地址:https://arxiv.org/abs/1904.08189 代码链接:https://github.com/Duankaiwen/CenterNet 概述 CenterNet ...

  7. Unity中利用委托与监听解耦合的思路

    这篇随笔是一篇记录性的随笔,记录了从http://www.sikiedu.com/my/course/304,这门课程中学到的内容,附带了一些自己的思考. 一.单例模式的应用 首先假想一种情况,现在需 ...

  8. ionic3打包打包安卓apk详细过程以及遇到的问题

    1.jdk和sdk的安装以及环境变量配置参考打包详解 上述连接已经从下载安装jdk以及sdk的环境变量配置到打包的流程以及很详细了.但是在我自己安装打包的过程中遇到了这篇文章中没有遇到的问题,下面图文 ...

  9. 2016424王启元 Exp3免杀原理与实现

    基础问题回答 1.杀软是如何检测出恶意代码的? (1)基于特征码的检测 特征码是能识别一个程序是一个病毒的一段不大于64字节的特征串.如果一个可执行文件包含这样的特征码则被杀毒软件检测为是恶意代码. ...

  10. iis支持asp.net4.0的注册命令使用方法及部署网站注意事项

    如果没有按照正常的先装iis后装.net的顺序,可以使用以下命令重新注册一下,这样iis就可以支持asp.net 4.0了   32位的Windows: 1. 运行->cmd,打开窗口时请以管理 ...