vue使用 elementUI中el-upload的遇到的问题总结

使用场景,使用el-upload上传文件,选择文件后不立即上传到服务器上,点击提交按钮时与其他form表单数据一起提交,类似的需求,相信有很多小伙伴遇到,可能也会遇到跟我一起的问题,在这里记录一下
1
2
3
4
5
6
7
<el-upload
  class="upload-file"
  action=""
  :on-change="handleChange">
  <el-button size="small" type="primary">点击上传</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>

  

问题1:el-upload文件上传组件,设置auto-upload为false,on-change事件只触发一次

由于原生的input type="file"不管文件上传成功与否,已添加的文件已经被记录了,所以上传文件时,不会触发change事件,这里我们就把已经添加的文件记录清除来解决该问题

html(给el-upload添加ref属性)

1
2
3
4
5
6
7
8
<el-upload
  class="upload-file"
  ref="upload"
  action=""
  :on-change="handleChange">
  <el-button size="small" type="primary">点击上传</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>

  

javascript(使用一个变量保存已上传的文件)

handleChange(file) {
    this.file = file;
    this.$refs.upload.clearFiles(); // 清空文件
}

问题2:file与form表单数据一起提交

复制代码
/** 保存 */
saveUpload() {  
    if (!this.file) return this.$message.warning('请选择文件')    
    this.param = new FormData()    
    // 文件  
    this.param.append('file', this.file.raw, this.file.name)    
    // ID    
    this.param.append('id', this.id)    
    const token = JSON.parse(localStorage.getItem("token")) || ''    
    // 设置请求头    
    let config = {     
        headers: { 
            'Content-Type': 'multipart/form-data', 
            'Authorization': token 
        }   
    };   
    axios.post(this.uploadUrl, this.param, config).then(      
        response => { console.log('res', response) },      
        err => { reject(err); }    
    ).catch((error) => { reject(error) })
}
复制代码

 

至此,问题总结记录完毕

posted @   喆星高照  阅读(3155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示