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

devtools/2024/11/15 18:07:59/
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/devtools/26135.html

相关文章

VMware虚拟机安装Linux(CentOS)【超详细】

参考大佬文章:VMware虚拟机安装Linux教程(超详细)_vmware安装linux虚拟机-CSDN博客 目录 一、获取映射文件 二、新建虚拟机 三、安装操作系统 四、切换系统用户 一、获取映射文件 参考大佬文章获取映射文件,以及对应修改后缀名的方法 二、新建虚拟…

Hotcoin 投融资周报|4.20–4.26共38笔公开投融资事件,基础设施领跑,游戏、DeFi相关融资活跃

​​4月20日至4月26日期间,加密市场共发生38笔投融资事件,其中基础设施10笔、游戏 10 笔、DeFi 6笔、AI3笔、Depin 2 笔、NFT相关2笔、SocialFi 1笔、 其他 4 笔。 本周千万美金以上融资有5笔: 模块化 Move 区块链框架Movement完成了一轮38…

ChatGPT向付费用户推“记忆”功能,可记住用户喜好 | 最新快讯

4月30日消息,人工智能巨头OpenAI宣布,其开发的聊天机器人ChatGPT将在除欧洲和韩国以外的市场全面上线“记忆”功能。这使得聊天机器人能够“记住”ChatGPT Plus付费订阅用户的详细信息,从而提供更个性化的服务。 OpenAI早在今年2月就已经宣布…

JENKINS 安装,学习运维从这里开始

Download and deployJenkins – an open source automation server which enables developers around the world to reliably build, test, and deploy their softwarehttps://www.jenkins.io/download/首先点击上面。下载Jenkins 为了学习,从windows开始&#x…

【JAVA】part5-Java集合

Java 集合 Java集合概述 Java数组的局限性 数组初始化后大小不可变;数组只能按索引顺序存取。 Java的java.util包主要提供了以下三种类型的集合: List:一种有序列表的集合,例如,按索引排列的Student的List&#xff1b…

用于复杂任务的 AI 编码引擎:多文件多步骤拆解实现 | 开源日报 No.239

plandex-ai/plandex Stars: 3.1k License: AGPL-3.0 plandex 是一个用于复杂任务的 AI 编码引擎。 使用长时间运行的代理完成跨多个文件且需要多个步骤的任务将大型任务分解为较小子任务,逐一实现,直至完成整个工作帮助处理积压工作、使用陌生技术、摆…

Day28:ElasticSearch入门、Spring整合ES、开发社区搜索功能

ElasticSearch入门 Elasticsearch简介 一个分布式的、Restful风格的搜索引擎。支持对各种类型的数据的检索(非结构化的也可以)。搜索速度快,可以提供实时的搜索服务。便于水平扩展(集群式部署),每秒可以处…

从0开始的数据结构的书写-------线性表(单链表)

(复习考研的休息区,心血来潮,写点代码) 三个规则: 1、不使用c stl库进行书写 2、最好基于严蔚敏老师的数据结构 3、最好使用malloc和realloc动态分配内存 (如果有问题或者是有没有实现的操作&#xff…