SpringBoot用MultipartFile.transferTo传递相对路径的问题

  • 问题描述:

    打算给自己的项目添加一个上传文件保存功能,于是我使用MultipartFile.transferTo()来完成这个功能,由于我的项目要部署到服务器,所以我使用了相对路径把上传的文件保存到当前项目的工作目录下,但是报错了!(绝对路径可以正常使用,找了一下午没弄明白,第二天早上才反应过来会不会是这个方法就不支持直接使用相对路径,果然是猜想的这样!)

  • 当MultipartFile的transferTo()的参数是相对路径时,会自动拼接成一个绝对路径,但这个绝对路径并不是真实存在的,所以转存时会报错,而如果传递的时绝对路径,就不会有问题。

image-20240110121520742

  • 解决方法如下:
//修改1.写你要保存上传文件的相对路径File dir = new File("./src/main/resources/img/");if (!dir.exists()) {dir.mkdirs(); // 创建目录}String realPath = dir.getCanonicalPath(); // 获取真实路径
//修改2File dest = new File(realPath+"/"+fileName);
  • 最后完整的代码:
 @RequestMapping("/upload")public String upload(HttpServletRequest request, HttpServletResponse req) throws IOException {MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;//前端参数名MultipartFile file = multiRequest.getFile("image");if (file.isEmpty()) {return "上传失败,请选择文件";}//获取到上传文件名String fileName = file.getOriginalFilename();//修改1.写你要保存上传文件的相对路径File dir = new File("./src/main/resources/img/");if (!dir.exists()) {dir.mkdirs(); // 创建目录}String realPath = dir.getCanonicalPath(); // 获取真实路径
//        String filePath = "./src/main/resource/img/" + fileName; // 这里填写你想要保存的路径,例如:"images/" + fileName;//修改2File dest = new File(realPath+"/"+fileName);try {file.transferTo(dest);
//            file.transferTo(dest);req.sendRedirect("ok.html");return fileName;} catch (IOException e) {e.printStackTrace();}return "上传失败!";}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/613689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++上位软件通过Snap7开源库访问西门子S7-200/LOGO PLC/合信M226ES PLC V存储区的方法

前言 在前面例程中谈到了C 通过Snap7开源库S7通信库跟西门子S7-1200PLC/S7-1500PLC以及合信CTMC M226ES PLC/CPU226 PLC通信的方式方法和应用例程。但是遗憾的是Snap7中根据官方资料显示只能访问PLC的 DB区、MB区、C区、T区 、I区、Q区,并没有提到有关如何访问S7-20…

jsx的语法规则?

JSX&#xff08;JavaScript XML&#xff09;是一种在 JavaScript 中编写类似 XML 的语法扩展&#xff0c;常用于 React 应用程序中描述用户界面。下面是 JSX 的一些基本语法规则&#xff1a; 嵌套规则&#xff1a;JSX 元素可以相互嵌套&#xff0c;并且需要使用闭合标签。 <…

Excel4:数据匹配与连接

数据&#xff1a;八月成交数据&八月获客数据 业务1 八月成交数据表格中有三个子表&#xff0c;需要后两个子表连接到第一个表中。 思路 首先需要对业务组名称进行分裂&#xff0c;同时需要用到一款函数可以自动识别并匹配数据&#xff0c;这个函数就是vlookup&#xff0c;也…

在学习爬虫前的准备

1. 写一个爬虫程序需要分几步 获取网页内容。 我们会通过代码给一个网站服务器发送请求&#xff0c;它会返回给我们网页上的内容。 在我们平时使用浏览器访问服务器内容是&#xff0c;本质上也是向服务器发送一个请求&#xff0c;然后服务器返回网页上的内容。只不过浏览器还会…

K8s Pod详解

1.Pod结构 每个Pod中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类&#xff1a; 用户程序所在的容器&#xff0c;数量可多可少 Pause容器&#xff0c;这是每个Pod都会有的一个根容器&#xff0c;它的作用有两个&#xff1a; 可以以它为依据&#xff0c;评估整个…

恒创科技:解决Windows服务器磁盘空间不足的问题

​  服务器硬盘的大小是决定空间是否充足的主要因素。但在日常使用中&#xff0c;服务器和网站备份会消耗大量存储空间&#xff0c;如果维护不当&#xff0c;最终将耗尽您的容量。同样&#xff0c;日志文件、临时文件和数据库可以在硬盘驱动器上或回收站中无休止地建立。当您…

手把手教你升级GPT-4,内附详细步骤

目录 1、先介绍一下 GPT 升级 2、第一种: 免费升级 支付宝购买礼品卡给美区 apple id 充值 3、第二种&#xff1a;5分钟快速升级 方法 平时我会在朋友圈分享一些利用 GPT-4 画的图片&#xff0c;比如下面这个扑克牌风格的"黑红小狗武士"。 用 GPT-4 做绘画仅仅是…

如何使用宝塔面板部署Inis博客并实现无公网ip环境远程访问

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3. 公网访问测试总…

大创项目推荐 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分…

ElasticSearch _update_by_query

根据查询条件进行数据更新 UPDATE job_call SET admin_id 0 WHERE admin_id 283; kibana.png 1.其中红色框的位置为query的内容&#xff0c;对应为SQL语句中的WHERE admin_id 283 2.划红色线的位置为修改内容&#xff0c;对应SQL中的SET admin_id 0。如果是更新多个字段s…

GBASE南大通用ExecuteReader 方法 (CommandBehavior)

使GBASE南大通用Connection 执行 CommandText 属性指定的 SQL 语句&#xff0c;并使用CommandBehavior 的一个值构建 GBaseDataReader。  语法 [Visual Basic] Public Function ExecuteReader ( _ behavior As CommandBehavior _ ) As GBaseDataReader [C#] public GB…

手轮脉冲平滑处理笔记

这是一个求手脉倍率((Hw_Control.mult_ratio)与手脉脉冲计数延迟次数即累计过去n次的平均值(Hw_Control.lag_num)之间关系算法的计算过程笔记文档 1、已知 mult_ratio=1时 lag_num=10; mult_ratio=10时 lag_num=20; .mult_ratio==100时 lag_num=30; 以此类推 2、设lag_num…

开关电源PFC电路原理详解及matlab仿真

PFC全称“Power Factor Correction”&#xff0c;意为“功率因数校正”。PFC电路即能对功率因数进行校正&#xff0c;或者说能提高功率因数的电路。是开关电源中很常见的电路。 在电学中&#xff0c;功率因数PF指有功功率P&#xff08;单位w&#xff09;与视在功率S&#xff08…

springboot 多数据源怎么配置在控制台的sql打印日志

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

每日学习更新(LQR+iLQR)

一直想更新一下根据cost to go来推导LQR&#xff0c;之前的话可能会直接套问题&#xff0c;但是对于理论有些困惑&#xff0c;正好最近在学习ilqr轨迹生成/优化&#xff0c;因此来推一下公式&#xff0c;以下参考B站Dr_CAN&#xff0c;链接如下&#xff1a; 【最优控制】5_线性…

Maven在java中的实现(对java的项目进行打包)

前言: 在前面的文章中我们了解了Maven的作用,并在自己的电脑上安装配置好了Maven,也成功的在IDEA中添加了Maven,但是具体的实现还是有一些些小问题,那么接下来,我将带着大家对Java项目进行一次打包,系统的完成一次,并在途中解决一下会出现的问题. 我以图片中选中的这个包为例,…

计算机算法贪心算法

贪心算法&#xff08;Greedy Algorithm&#xff09;是一种常见的算法思想&#xff0c;它在每一步选择当前状态下最优的解决方案&#xff0c;从而希望最终能够达到全局最优解。 贪心算法的基本思路是每一步都选择当前状态下的局部最优解&#xff0c;而忽略了当前选择所带来的影…

稀疏卷积库汇总

文章目录 NVIDIA&#xff1a;Minkowski EngineMIT HAN Lab: TorchsparseSPconv NVIDIA&#xff1a;Minkowski Engine github: https://github.com/NVIDIA/MinkowskiEngine 文档&#xff1a; https://nvidia.github.io/MinkowskiEngine/sparse_tensor.html 相关论文 4D Spat…

C++的内存管理模型

C的内存管理模型是基于手动内存管理的&#xff0c;即程序员需要显式地分配和释放内存。以下是C的内存管理模型的一些关键概念和操作&#xff1a; 堆&#xff08;Heap&#xff09;&#xff1a;堆是用于动态分配内存的区域。程序员可以使用new运算符在堆上分配内存&#xff0c;并…

【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer

【Kafka-3.x-教程】专栏&#xff1a; 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…