java一个接口完成三种文件类型上传(exe,文档,图片)

server/2025/2/14 7:50:35/
java">try {// 获取文件后缀名String originalFilename = file.getOriginalFilename();String fileExtension = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();// 判断文件类型并设置对应的字段和保存路径String filePath;String fieldType;if (fileExtension.equals(".exe")) {filePath = saveFileAndGetPath(file, param, "exe");fieldType = "Downloadpath";} else if (fileExtension.equals(".doc") || fileExtension.equals(".docx")) {filePath = saveFileAndGetPath(file, param, "word");fieldType = "Manualpath";} else if (fileExtension.equals(".jpg") || fileExtension.equals(".jpeg") || fileExtension.equals(".png") || fileExtension.equals(".gif")) {filePath = saveFileAndGetPath(file, param, "img");fieldType = "Imgurl";} else {return ResultVo.error("不支持的文件类型");}// 获取id参数String id = param.getStr("id");Plugins plugins = pluginsService.getById(id);// 更新字段switch (fieldType) {case "Downloadpath":plugins.setDownloadpath(filePath);break;case "Manualpath":plugins.setManualpath(filePath);break;case "Imgurl":plugins.setImgurl(filePath);break;}// 更新数据库pluginsService.updateById(plugins);// 返回成功信息ResourceVo vo = new ResourceVo();vo.setLocation(filePath);return ResultVo.success(vo);} catch (IOException e) {throw Exceptions.Business.ResourceNotSaved("文件保存失败", e);}

根据上传的后缀名来判断

java">private String saveFileAndGetPath(MultipartFile file, JSONObject param, String fileType) throws IOException {// 获取id参数String id = param.getStr("id");String vcode = pluginsMapper.findVcode(id);// 获取资源根路径String resourcesPath = sysconfService.getSysConfByName("resourcesPath");if (!StringUtils.hasText(resourcesPath)) {throw Exceptions.Business.ResourceNotSaved("资源根路径没有配置或值为空,请先正确配置 resourcesPath");}// 构建文件存储路径String subPath = "/" + fileType + "/";String datetime = DateUtils.getStringDateTime();String fileExtension = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase();String fileName = id + fileExtension;String filePath = resourcesPath + "/plugin" + subPath + datetime + "/" + fileName;Path path = Paths.get(filePath);// 确保目录存在Files.createDirectories(path.getParent());// 保存文件Files.write(path, file.getBytes());return filePath;}

然后执行文件保存方法


http://www.ppmy.cn/server/36659.html

相关文章

Xshell不能使用(版权原因不能使用),通过ip连接虚拟机CentOS7系统拷贝文件

一、使用SSH服务 1.确保 CentOS 7 虚拟机安装了 SSH 服务。 systemctl status sshd 如果没有安装,您可以使用以下命令来安装: sudo yum install openssh-server 2.启动 SSH 服务(如果尚未启动): sudo systemctl …

[Rust] 打印变量类型

一、简介 本文介绍了如何在Rust中打印变量的类型。 二、代码 代码&#xff1a; // 使用 print_type_of 函数打印变量类型 fn print_type_of<T>(_: &T) {println!("{}", std::any::type_name::<T>()) }fn main() {let s "Hello";let i…

【一看就懂】UART、IIC、SPI、CAN四种通讯协议对比介绍

UART、IIC、SPI、CAN四种通信协议对比 通信方式传输线通讯方式标准传输速度使用场景UARTTX(发送数据线)、RX(接收数据线)串行、异步、全双工115.2 kbit/s(常用)计算机和外部设备通信&#xff08;打印机&#xff09;IICSCL(时钟线)、SDA(数据线)串行、同步、半双工100 kbit/s(标…

10页面结构分析

我们打开一个网页&#xff0c;都会有一个清晰的结构和布局上图中的标签就是用来划分各个部分区域用的。其中比较常用重要的是header、footer和nav&#xff0c;需要重点掌握。 下面是部分代码及效果演示 <header> <h2>网页头部</h2> </header><sec…

【AIGC调研系列】VILA-1.5版本的视频理解功能如何

VILA-1.5版本的视频理解功能表现出色&#xff0c;具有显著的突破。这一版本不仅增强了视频理解能力&#xff0c;还提供了四种不同规模的模型供用户选择&#xff0c;以适应不同的应用需求和计算资源限制[1][2][3]。此外&#xff0c;VILA-1.5支持在笔记本等边缘设备上部署&#x…

MyBatis-Plus 数据库表字段名为关键字

数据库表字段名为关键字时&#xff0c;执行SQL是会报错的&#xff0c;一般的处理是在字段左右加解决&#xff0c;MyBatis-Plus也支持这种处理方式。 找到数据库表对应的实体类。TableField注解中的值左右添加即可。Schema(description "说明") TableField("de…

JavaEE初阶-多线程易忘点总结

文章目录 1.PCBPID文件描述符表内存指针状态上下文优先级记账信息tgid 2.线程与进程的区别3.sleep和interrupt方法的关系变量终止线程interrupt方法终止线程 4.线程状态5.出现线程不安全的原因线程在系统中是随即调度&#xff0c;抢占式执行的。多个线程修改同一个变量线程针对…

从互联网医院源码到搭建:开发视频问诊小程序的技术解析

如今&#xff0c;视频问诊小程序作为医疗服务的一种新形式&#xff0c;正逐渐受到人们的关注和青睐。今天&#xff0c;小编将为您详解视频问诊小程序的开发流程。 一、背景介绍 互联网医院源码是视频问诊小程序开发的基础&#xff0c;它提供了一套完整的医疗服务系统框架&…