前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue文件上传问题合集

Vue文件上传问题合集

作者头像
全栈程序员站长
发布2022-09-22 21:45:45
8350
发布2022-09-22 21:45:45
举报

大家好,又见面了,我是你们的朋友全栈君。

目录

1.背景

2.环境

3.问题集

1)文件上传完成后,文件名的回显

2)文件上传完成前的加载状态

3)文件上传作为必填项

1.背景

在使用Vue+ElementUI进行前端工程开发中,遇到一些文件上传的问题,包括上传、回显、等待等。这里做一些记录,方便以后查看

2.环境

npm

6.14.12

vue-admin-template

4.4.0

axios

0.18.1

element-ui

2.13.2

3.问题集

1)文件上传完成后,文件名的回显

关键属性el-upload中 :file-list, :show-file-list

详细代码请往后看~~

参考:

https://www.jb51.net/article/183328.htm

vue+elementUI上传图片/文件,编辑时回显文件名_LBJSagiri的博客-CSDN博客

elementUI上传图片回显在编辑 – 写手在作画 – 博客园

根据elementui中的上传组件upload,手写一个编辑时回显上传文件以及继续新增文件的功能 – 简书

element-ui Upload 上传文件再编辑显示的两种方式_liaoxuewu的博客-CSDN博客

2)文件上传完成前的加载状态

关键属性v-loading和el-upload中:on-progress。

详细代码请往后看~~

参考:

vue自定义指令v-loading_伴个人993的博客-CSDN博客

【转】Vue v-loading实现加载效果 – 花影疏帘 – 博客园

vue+element-ui中上传文件使用Progress自定义实时更新进度条 – 简书

vue element-ui 上传文件的 :on-progress钩子无法触发的原因及报错原因 – 嘉煠 – 博客园

3)文件上传作为必填项

关键属性 el-form中定义prop和:rules。上传后,必填提示清除

详细代码请往后看~~

参考:

【vue】vue表单必填项前面添加红色*_小朋友的博客-CSDN博客

vue上传文件,文件是必填项的验证 – 吃的快不吐骨头 – 博客园

代码语言:javascript
复制
<template>
  <div v-loading="loading" ref="fileUpload">
	<el-form-item label="文件上传" ref="fileUpload" prop="filepath" :rules="rules.file">	// 必填项以及规则
	   <el-upload
		 v-model="item.filepath"
		 :on-success="handleFileSuccess"
		 :on-remove="handleFileRemove"
		 :before-remove="beforeFileRemove"
		 :on-exceed="handleUploadExceed"
		 :file-list="fileList"            // 文件列表
		 :show-file-list="isShow"        // 文件回显标记
		 :action="'/myService/file/upload'"
		 :limit="1"
		 class="upload-demo"
	   >
		 <el-button size="small" type="primary">上传文件</el-button>
		 <el-tooltip placement="right-end">
		   <div slot="content">只能上传txt文件,且不超过2MB</div>
		   <i class="el-icon-question" />
		 </el-tooltip>
	   </el-upload>
	</el-form-item>
  </div>
</template>

export default {
	data() {
		return {
			loading: false,
			item: {
				filepath: "",
			},
			
			// 必填项规则
			rules: [
				file: {required: true, message:"文件必须上传", trigger: "change"}
			]
		}
	
	},
	handleFileSuccess(response) {
	  this.item.filepath = response.data.items.filepath;		// 后端返回的对象key为items,其中文件链接存放在变量filepath中
	  if (this.item.filepath != null) {
		this.isShow = true;
		this.$message({
		  showClose: true,
		  message: "上传成功!",
		  type: "success",
		});
		(this.rules.file = []), this.$refs.fileUpload.clearValidate();		// 动态删除文件上传必填的提示信息
	  } else {
		this.isShow = false;
		this.fileList = [];
		this.$message({
		  showClose: true,
		  message: "上传失败!",
		  type: "error",
		});
	  }
	  this.loading = false;				// 上传完成后loading状态清楚
	},
	handleUploadExceed() {
	  this.$message.warning("想要重新上传文件,请先删除已上传的文件");
	},
	beforeFileRemove(file, fileList) {
	  return this.$confirm(`确定删除 ${file.name}`);
	},
	handleFileRemove() {
	  this.item.filepath = "";		// 删除文件时清空文件地址
	},
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170635.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.背景
  • 2.环境
  • 3.问题集
    • 1)文件上传完成后,文件名的回显
      • 2)文件上传完成前的加载状态
        • 3)文件上传作为必填项
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档