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. tableView下沉

    出现问题的界面如下,并附有大致介绍: 而我想做的界面应该是自定义的headerView和tableView是一起滑动的,而不是headerView在tableView滑动的时候始终在顶部位置,而且ta ...

  2. Nginx 常用命令总结

    查看某个程序的进程:ps -aux | grep nginx (进程的名字:httpd-apahe进程 mysqld-mysql的进程 svn-svn的进程 php-fpm - PHP进程 ) 查看某 ...

  3. lua小试牛刀

    function function max(num1, num2) if(num1 > num2) then result = num1; else result = num2; end ret ...

  4. java中如何把图片转换成二进制流的代码

    在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...

  5. R 拆分EXCEL成多个文件

    setwd("C:/Rworkfile") install.packages("readxl") library(readxl) www<-read_ex ...

  6. readonly与disable

    Readonly只针对input(text / password)和textarea有效,而disabled对于所有的表单元素都有效,但是表单元素在使用了disabled后,当我们将表单以POST或G ...

  7. 面经问题总结——django相关

    1.让你从头设计一个web框架,第一步你会做什么? 2.django的orm是怎么实现的? 3.django的URL路径映射是怎么实现的? 4.平常你怎么运用django提供的钩子函数? 5.三级分销 ...

  8. Unity QualitySettings.vSyncCount 垂直同步数

    QualitySettings.vSyncCount 垂直同步数 Description 描述 The VSync Count. 垂直同步数. The number of VSyncs that sh ...

  9. 028-applicationContext.xml配置文件

    版本一 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http: ...

  10. 在浏览器中输入URL并回车后都发生了什么?

    1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...