vue element UI图片上传到fastDFS 前/后台实现图片显示

2023-11-11

第一次开发element图片上传,到网上找了很多例子,感觉不全面,所以才写了这篇文章,希望帮助新手快速开发。

vue 使用element实现本地预览 最主要的是将图片路径转换为base64

VUE HTML

<el-form-item label="图片" prop="imgSrc" :label-width="formLabelWidth"> 
   <el-upload
    class="avatar-uploader"
	action="#" 
	v-model="dataForm.imgSrc"
	:show-file-list="false"
	:on-success="handleAvatarSuccess"
	:on-change="onchange"
	:before-upload="handleBeforeUpload"> 
	<i class="el-icon-plus"></i>
   </el-upload>
   <img v-if="imageUrl" :src="imageUrl" class="avatar">
   <i v-else class="el-icon-plus avatar-uploader-icon"></i>  
</el-form-item>

JS

data() {
		return {
			 
			dataFormRules: {
				 
				imgSrc: [{ 
					required: true, message: '请上传图片', trigger: 'blur' 
				}]
			},
			 
			// 新增编辑界面数据
			dataForm: {
				id: 0,
				displayTypeName: '',
				monitorFactorOptions:'',
				imgSrc:'',
				remarks: ''
			},
			//图片
			imageUrl: '' 

		}
	},
methods: {
		// 显示编辑界面
		handleEdit: function (row) {
			this.editDialogVisible = true
			this.operation = false
			this.dataForm = Object.assign({}, row)
			this.imageUrl = row.imgSrc
		},
        handleAvatarSuccess(res, file) {
			this.imageUrl = URL.createObjectURL(file.raw); 
		},
		// 上传文件之前的方法
		handleBeforeUpload(file){		
			if(!(file.type === 'image/png' || file.type === 'image/gif' || file.type === 'image/jpg' || file.type === 'image/jpeg')) {
				this.$message.error('上传图片格式为image/png, image/gif, image/jpg, image/jpeg的图片!');
				return isJPG
			}
			const isLt2M = file.size / 1024 / 1024 < 2;
			if (!isLt2M) {
				this.$message.error('上传图片大小不能超过 2MB!');
				return isLt2M
			} 

			let fd = new FormData();
			fd.append('file',file);//传文件 
			//上传到后台
			imgUpload(fd).then(res => {  
				this.dataForm.imgSrc = res.data; 
				this.$message({ message: "上传成功", type: "success" });
			});					
		},
		//当上传图片后,调用onchange方法,获取图片本地路径
		onchange(file,fileList){
			var _this = this;
			var event = event || window.event;
			if(event.target.files!=undefined){
				var file = event.target.files[0];
				var reader = new FileReader(); 
				//转base64
				reader.onload = function(e) {
				_this.imageUrl = e.target.result //将图片路径赋值给src
				}
				reader.readAsDataURL(file);
			}
		}, 

}


// 上传图片
export function imgUpload(data) {
  return request({
    url: '/iot-business-app/displayType/imgUpload',
    method: 'post',
    data
  })
}

Java

 /**
     * 图片上传
     * @param file
     * @return
     * @throws IOException
     */
    @RequestMapping(value="/imgUpload",method= RequestMethod.POST)
    @ResponseBody
    public Map imgUpload(@RequestParam("file") MultipartFile file) {
        String url=null;
        String ext_name=null;
        if(file!=null) {
            try {
                String s[]=(file.getOriginalFilename()).split("\\.");
                if(s.length==2) {
                    ext_name=s[1];
                }
                ClientGlobal.init("fdfs_client.conf");
                TrackerClient trackerClient = new TrackerClient();
                TrackerServer trackerServer = trackerClient.getConnection();
                StorageClient1 storageClient1 = new StorageClient1(trackerServer, null);
                url = "http://192.168.1.234:8888/"+storageClient1.upload_file1(file.getBytes(),ext_name,null);

//                url= "{url:\""+strs+"\",filename:\""+file.getOriginalFilename()+"\"}";
                System.out.println("========url========"+url);
            } catch (IOException | MyException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return null;
            }
        }
        Map<String ,Object> res=new HashedMap();
        res.put("code",20000);
        res.put("data",url);
        return res;
    }

Java配置文件fdfs_client.conf

connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
http.secret_key = FastDFS1234567890
tracker_server = 192.168.1.234:22122

效果展示:

新增上传效果

加载编辑页面显示图片效果:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue element UI图片上传到fastDFS 前/后台实现图片显示 的相关文章

随机推荐

  • Xshell缺少.dll文件解决方案

    背景 安装Xshell时报错 由于找不到MSVCR110 dll文件 无法继续执行代码 重新安装程序可能会解决此问题 这种情况是缺少运行库 解决方案 微软常用运行库 https pan baidu com s 1kgJRky3cicOMxR
  • 计算机打不开excel表格,excel表格打不开怎么办?excel表格打不开的原因及解决方法...

    今天有网友反映 他昨天做的Excel表格打不开了 但其他Excel表格是可以打开的 非常郁闷 那么Excel表格打不开是什么原因呢 Excel表格打不开怎么办呢 下面脚本之家小编就来说说有关造成Excel表格打不开的几种原因及解决办法 一
  • 基于Loung Attention+LSTM的机器翻译模型

    目录 需要掌握的基础知识 1 Encoder Decoder架构 2 LSTM模型原理 3 Attention机制 基于Loung Attention LSTM的机器翻译模型 模型 数据 训练 基于Bahdanau Attention LS
  • 大数据安全治理平台建设方案

    近年来 随着大数据应用的普及 在新基建 智慧城市 云端应用等大背景趋势下 给我们日常生活便来了很多方便 同时也派生出更多网络安全风险 如企业数据泄露 欺诈 数据违规使用 个人隐私泄露以及企业内部各种威胁和潜在风险 数据是宝贵的资源和财富 当
  • LCD操作原理

    一 LCD原理介绍 LCD内部内部结构 1 lcd由Framebuffer lcd屏幕 信号线 电子枪 lcd控制器组成 2 Framebuffer提供显示数据 lcd屏幕显示 信号线传输Frambuffer中的数据和lcd控制器发出的信号
  • 【深度学习】Attention提速9倍!FlashAttention燃爆显存,Transformer上下文长度史诗级提升...

    转载自 新智元 继超快且省内存的注意力算法FlashAttention爆火后 升级版的2代来了 FlashAttention 2是一种从头编写的算法 可以加快注意力并减少其内存占用 且没有任何近似值 比起第一代 FlashAttention
  • Sqli-labs Less-1 报错注入

    Sqli labs Less 1 报错注入 1 首先打开less1后是一个页面 提示输入id作为参数 输入id 1试一下 然后会出现 name 和 password 添加一个单引号 测试一下注入点 输入单引号发现 会直接将报错结果显示在页面
  • 模拟IC设计——MOS计算及常见MOS管电路

    小生初入模拟IC 作此笔记在大佬面前实属班门弄斧 若有不当之处还请指正 1 MOSFET概述 场效应管与晶体管一样 也具有放大作用 但与普通晶体管是电流控制型器件相反 场效应管是电压控制型器件 它具有输入阻抗高 噪声低的特点 1 MOSFE
  • 使用OpenCV中的matchTemplate函数实现模板匹配【C++版】

    matchTemplate函数原型 void cv matchTemplate InputArray image InputArray templ OutputArray result int method InputArray mask
  • THREEJS - 动态标签(dom方式)

    在三维场景中 我们会有一种需求 需要给三维场景中的模型打上标签 例如展示模型的名称 性能展示等 三维场景打标签的方式很多 有dom sprite Mesh等等 这篇文章来给大家介绍的是一种比较常见的打标签方式 dom 这种方式我们可以自定义
  • WSL2和本地windows端口互通

    众所周知 WSL 默认安装后 只允许windows访问 Windows Subsystem for Linux 而WSL是不能反之访问本地windows 我之前用vmware的思路认为是nat的网络模式 于是改成了桥接 结果wsl的桥接模式
  • springboot日志配输出路径配置_SpringBoot输出日志到文件

    1 基本信息 SpringBoot版本2 2 5 日志框架SLF4J 日志框架的实现LockBack 2 输出文件的配置 2 1 logging file name 指定日志文件的位置 2 1 1 例1 使用相对路径 就会在项目根目录下生成
  • R 语言散点图矩阵

    多个变量之间的关系经常用散点图矩阵表示 ggplot2 包没有提供专门的散点图矩阵 基础 R 图形中提供了 pairs 函数作散点图矩阵 GGally 包提供了一个 ggscatmat 函数作散点图矩阵 例如 对 iris 数据的四个测量值
  • UE4 C++ FString乱码显示问号

    如果以 xxx 这种形式并且xxx为中文时 直接赋值给FString的变量会丢失数据导致系统无法识别 因此需要做特殊处理 第一种解决办法 引号前加L表示将字符串转为unicode的字符串 也就是每个字符占用两个字节 FString str
  • 【无标题】DEFI+NFT新玩法

    DeFi NFT 去中心金融 非同质化货币 NFT Defi就是将流动性挖矿的方法移植到到NFT领域 目前典型的代表有MEME SAND RARI等 区块链行业一直困于 圈内自嗨 无法真正走入大众市场 市场和用户规模的增量相比互联网行业是杯
  • 学习笔记-二叉排序树

    二叉排序树 对于二叉排序树的任何一个非叶子节点 要求左子节点的值比当前节点的值小 右子节点的值比当前节点的值大 如果有相同的值 可以将该节点放在左子节点或右子节点 二叉排序树的创建和遍历 思路 比较节点的值 小于就放在左子节点 大于就放在右
  • 使用 AJAX+JSON 实现用户查询/添加功能

    实现用户查询 添加功能 1 查询功能 准备 selectAllServlet brand html 2 添加功能 addBrand html 表单
  • 基于51单片机的课程设计(毕业设计)——电子贺卡

    本篇文章将介绍一个基于51单片机的电子贺卡 本作品可用于课程设计 毕业设计的参考 其所用到的外设硬件以及程序的代码量都是相对较少的 对于51单片机的初学者 通过本设计熟悉51单片机的使用是非常好的选择 目录 一 实现功能 二 硬件准备 三
  • 短信猫(GSM MODEM)安装指南

    短信猫 GSM MODEM 安装指南 短信猫 又名GSM MODEM 专门针对短信应用设计 内含工业级短信发送模块 简化了通信接口 性能稳定可靠 符合各种商业和工业级短信应用要求 支持向移动 联通以及小灵通用户收发短信 适用于各行各业各个领
  • vue element UI图片上传到fastDFS 前/后台实现图片显示

    第一次开发element图片上传 到网上找了很多例子 感觉不全面 所以才写了这篇文章 希望帮助新手快速开发 vue 使用element实现本地预览 最主要的是将图片路径转换为base64 VUE HTML