vue + element-ui 文件上传el-upload

本文介绍了如何在使用Element-UI的文件上传组件时,禁用默认自动上传,获取用户选择的文件内容,并通过自定义事件实现点击上传。详细步骤包括设置:auto-upload属性为false,处理fileList数据,以及通过FormData上传到服务器。

vue + Element-ui 文件上传

在element-ui引入组件,把里面action去掉,用组件时,有个默认属性会自动上传,所以如果想通过点击进行上传动作的时候要把自动上传取消掉::auto-upload=“false”

在这里插入图片描述

通过该属性,可以在添加文件时,获取到文件内容,其返回的值为:file, fileList
通过该属性,可以在添加文件时,获取到文件内容,其返回的值为:file, fileList

写一个方法对返回回来的文件内容进行接收,this.filelist就是点击上传时要传回去的数据

用该属性来绑定上传事件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最后进行上传

 //上传文件
    handlerUpload() {
      // 通过 append() 方法来追加数据
      for (let i = 0; i < this.filelist.length; i++) {
        let param = new FormData();
        param.append("file", this.filelist[i].raw);
        uploadFileApi(param).then(res => {//接口
        })
      }
    },
// 把获取到的文件数据append到新定义的表单中
 let param = new FormData();
 param.append("file", this.filelist[i].raw);

最后通过接口就可以直接把想要上传的数据上传到服务器啦

上传的文件格式
在这里插入图片描述

### 使用Element-UIVue项目中实现文件上传 为了实现在Vue项目中的文件上传功能,需先确保已正确安装并配置好`element-ui`[^2]。 #### 安装 `element-ui` 全局引入方式是在项目的入口文件`main.js`中加入以下代码: ```javascript import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); ``` 这一步骤使得整个应用都可以访问到Element-UI所提供的组件和服务[^3]。 #### 实现文件上传 对于具体的文件上传操作,可以利用`<el-upload>`标签来构建上传界面。下面是一个简单的例子展示如何设置基本的文件上传表单: ```html <!-- HTML部分 --> <div id="app"> <el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" :on-preview="handlePreview" :on-remove="handleRemove" :before-remove="beforeRemove" multiple :limit="3" :on-exceed="handleExceed" :file-list="fileList"> <el-button size="small" type="primary">点击上传</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </div> ``` 上述HTML片段定义了一个带有按钮和提示信息的上传区域,其中`action`属性指定了接收上传请求的服务端地址;而其他事件处理函数则用于控制不同场景下的行为逻辑,比如预览、移除以及超出数量限制等情况的发生[^1]。 对应的JavaScript方法可以在Vue实例内部定义,以便响应这些交互动作: ```javascript new Vue({ el: '#app', data() { return { fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageView2/1/w/200/h/200'}] }; }, methods: { handleRemove(file, fileList) { console.log(file, fileList); }, handlePreview(file) { console.log(file); }, beforeRemove(file, fileList) { return this.$confirm(`确定要删除 ${ file.name }?`); }, handleExceed(files, fileList) { this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`); } } }); ``` 这段脚本初始化了一个Vue对象,并绑定了几个回调函数至相应的生命周期钩子上,从而实现了更丰富的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值