当前位置: 首页 > news >正文

element 表单提交图片(表单上传图片)

文章目录

  • 使用场景
  • 页面效果
  • 前端代码

使用场景

vue2 + element 表单提交图片
  1.点击【上传图片】按钮择本地图片(只能选择一张图片)后。
  2.点击图片,支持放大查看。
  3.点击【保存】按钮,提交表单。

页面效果

在这里插入图片描述

前端代码

HTML

<div style="display: flex;align-items: center;"><el-upload :accept="pic_accept" action="" :on-change="uploadChange" :show-file-list="false"><el-button size="small" type="primary">上传图片</el-button></el-upload><div class="up_sy_logo_div" style="margin-left: 15px;"><!--支持点击查看大图--><el-image v-if="ruleForm.hrefn" style="width:100px;" :src="ruleForm.hrefn" :preview-src-list="ruleForm.hrefn ? [ruleForm.hrefn] : []"></el-image></div>
</div>

Vue data

pic_accept: ".jpg,.png,.jpeg,.bmp",
pic_maxsize: "5",//单位MB
ruleForm: {hrefn: ""
},
file: [],//暂存文件
submitLoading: false,//防止重复提交

Vue methods

uploadChange(file) {if (file.status !== 'success') return;if (!this.checkFile(file)) return;this.ruleForm.hrefn = URL.createObjectURL(file.raw);// 复刻文件信息this.file = file.raw;
},
checkFile(file) {//  判断图片类型if (this.pic_type) {let picTypeArr = this.pic_type.split(',');let isImage = false;picTypeArr.forEach(item => {if (file.raw.type === 'image/' + item) {isImage = true;}});if (!isImage) {message.error('上传图片只能是 (' + this.pic_type + ') 格式!');return false;}}//  判断图片大小if (this.pic_maxsize > 0) {let isLtNumM = file.size / 1024 / 1024 < this.pic_maxsize;if (!isLtNumM) {message.error('上传图片大小不能超过 ' + this.pic_maxsize + 'MB!');return false;}}return true;
},
submitForm(formName) {let _this = this;let params = JSON.parse(JSON.stringify(this.ruleForm));let formData = new FormData();Object.keys(params).forEach((key) => {if (Array.isArray(params[key])) {params[key].forEach((v) => {formData.append(key + '[]', v);});} else {formData.append(key, params[key]);}});if (this.file.length !== 0) {formData.append('file', this.file);}_this.submitLoading = true;//httpPost 是自定义的函数httpPost('你的服务器接口URL', formData).then(function (response) {let res = response.data;if (res.error === 0) {message.success(res.msg);_this.clearForm();} else {message.error(res.msg);}//_this.$emit("child-event-list");}).catch(function (error) {console.log(error);}).finally(function () {_this.submitLoading = false;});
}

服务端 PHP接受参数

$_POST;
$_FILES['file'];

相关文章:

  • 扫盲:什么是webGPU,和webGL对比哪些优点?
  • Java——Stream流的学习
  • 分享一个学英语的网站
  • 若依不分离版本部署流程
  • 【工作记录】基于docker+mysql部署单机版nacos2.0.4@20240219
  • 淘宝商品采集API通过商品id获取商品详情信息
  • 网络安全-一句话木马
  • steam搬砖项目真的假的,2024年到底还能不能做?
  • Linux——网络通信TCP通信常用的接口和tcp服务demo
  • 【springboot+vue项目(十五)】基于Oauth2的SSO单点登录(二)vue-element-admin框架改造整合Oauth2.0
  • SQL-2
  • 二、ActiveMQ安装
  • spring boot自动装配及自动装配条件判断
  • 蓝桥杯刷题--python-9(2023填空题2)
  • Stable Diffusion——基础模型、VAE、LORA、Embedding各个模型的介绍与使用方法
  • [Vue CLI 3] 配置解析之 css.extract
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • [译]如何构建服务器端web组件,为何要构建?
  • 【node学习】协程
  • 11111111
  • Asm.js的简单介绍
  • javascript数组去重/查找/插入/删除
  • Java读取Properties文件的六种方法
  • Linux链接文件
  • MQ框架的比较
  • react 代码优化(一) ——事件处理
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SpingCloudBus整合RabbitMQ
  • SpriteKit 技巧之添加背景图片
  • 从零开始在ubuntu上搭建node开发环境
  • 基于webpack 的 vue 多页架构
  • 前端
  • 使用docker-compose进行多节点部署
  • 小程序 setData 学问多
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 你对linux中grep命令知道多少?
  • (1)STL算法之遍历容器
  • (C语言)fread与fwrite详解
  • (Forward) Music Player: From UI Proposal to Code
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (笔试题)合法字符串
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (南京观海微电子)——I3C协议介绍
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (四)c52学习之旅-流水LED灯
  • (一) springboot详细介绍
  • (一)基于IDEA的JAVA基础10
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .Net Core 中间件验签