MultipartFile中transferTo(File file)的路径问题

2023-11-02

今天看到layui的文件上传的控件,就尝试了一下。简单创建了一个SpringMVC项目。记得在配置文件中注入以下Bean。

<!-- 定义文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设定默认编码 -->
    <property name="defaultEncoding" value="UTF-8"></property>
    <!-- 设定文件上传的最大值为5MB,5*1024*1024 -->
    <property name="maxUploadSize" value="5242880"></property>
    <!-- 设定文件上传时写入内存的最大值,如果小于这个参数不会生成临时文件,默认为10240 -->
    <property name="maxInMemorySize" value="40960"></property>
    <!-- 上传文件的临时路径 -->
    <property name="uploadTempDir" value="fileUpload/temp"></property>
    <!-- 延迟文件解析 -->
    <property name="resolveLazily" value="true"/>
</bean>

我很懒,这些属性都没有配置,就注册了Bean。
接下来是我出错的地方。先上Controller代码,前台通过Layui的文件上传模块上传文件。

@ResponseBody
    @RequestMapping("/upload")
    public Map upload(HttpServletRequest request,MultipartFile file){
        HashMap<String,String> map=new HashMap();
        if (!file.isEmpty()) {
            try {
                // getOriginalFilename()是包含源文件后缀的全名
                String filePath = "D:/upload/test/"+file.getOriginalFilename();
                System.out.println(filePath);
                File saveDir = new File(filePath);
                if (!saveDir.getParentFile().exists())
                    saveDir.getParentFile().mkdirs();
                file.transferTo(saveDir);
                map.put("res","上传成功");
                return map;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        map.put("res","上传失败");
        return map;
    }

transferTo方法中传递的file如果是路径的话,那么它会将最后一层路径当做文件名,没有后缀的那种。此时重命名这个文件,更改成和上传文件一致的后缀那么就可以打开了。
比如我将

 String filePath = "D:/upload/test/"+file.getOriginalFilename();

改成

String filePath = "D:/upload/test";

运行之后打开文件发现这样的:
在这里插入图片描述
transferTo将我想作为文件夹的test当做文件名了。我加个后缀.jpg
在这里插入图片描述
和上传的文件一致。

最后个人理解为传入的File参数是应该包含文件而不是文件路径,transferTo()并不会将文件转存到文件夹下。

如有错误望留言指正。

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

MultipartFile中transferTo(File file)的路径问题 的相关文章

  • 不要只满足于写业务逻辑

    最近在知乎上 看到三个程序员失业 当然 失业是正常的 我自己就失业多次 他们的共同点 是只会写业务逻辑 其中有一个是工作八年的 创业公司失败的 我觉得他找工作应该好找 如果我8年全职经验 可以横着走了 让我惊讶的是 他说一年的工作经验用了八
  • 中国高房价时期it从业人员指导工资简易计算公式-国标(GB54321)

    版权所有 瞿正峰 转载请保留版权声明 http blog csdn net gonxi 中国高房价时期it从业人员指导工资简易计算公式 在线计算器 http www gonxi com 快去算算你的工资 A 10年期间的平均每月工资 Wa
  • 【自定义表单】自定义表单设计

    1 后端设计1 diy field pool 字段池 我们定义好的字段类型 diy form 表单表 记录用户自定义的表单 diy form field 表单字段表 记录某张表单中有哪些字段 diy form entity 表单实例表 记录
  • 初步判断,学ue4的捷径就是先学好unity

    这两天 看Unity 发现和ue4都是组件式编程 基本上如出一辙 只是Unity更简单些 资料丰富些 学Ue4 是c 的问题么 我认为是游戏理念的问题 不懂游戏 更不会用组件式引擎写游戏 即 不懂业务 只能写slate 好比 学会c 了就会
  • gateway 报错 reactor.core.Exceptions$ErrorCallbackNotImplemented

    生产环境好好的 突然前端请求全部跨域 请求 500 gateway 报错 reactor core Exceptions ErrorCallbackNotImplemented java lang IndexOutOfBoundsExcep
  • Oracle环境变量配置步骤

    Oracle11g环境变量配置 在做开发的过程中 几次重装系统安装配置过Oracle 本篇博客就对oracle配置环境变量的细节做一次记录和分享 三个模块 Oracle11g的安装 instantclient 11 2客户端的安装 PLSQ
  • 2022美赛备赛资料大全

    目录 1 美赛比赛网址及其介绍 2 美赛摘要页说明 3 美赛常用词语与语句 4 美赛翻译注意事项 5 美赛论文写作一些建议 5 1 团队方面准备 5 2 摘要表部分 5 3 评委关注点 6 组队要求 7 软件与一些建模网址参考 1 写一篇建
  • git 远程删除不需要的文件

    git clone git 192 168 2 246 dev ncrm git 23 find name target 24 find name target xargs rm rf 25 find name target 26 git
  • Yarn介绍及快速安装 - Debian/Ubuntu Linux

    1 Yarn介绍 Yarn 是一个用于管理 JavaScript 包的快速 可靠和安全的包管理器 它是由 Facebook Google Exponent 和 Tilde 团队共同开发的 旨在提供比 npm 更快速 可靠的包管理体验 以下是
  • Windows系统安装Linux系统教程

    下载VMware workstation 安装地址如下 VMware下载地址 下载好了就是这个样子 我选择的是试用30天 大家也可以找破解版安装包 下载ubuntu ubuntu桌面版下载地址 下载桌面版就好 接下来是安装过程 每一步都有详
  • 电脑没有摄像头怎么办

    电脑没有摄像头怎么办 电脑没有摄像头但是需要用到摄像头怎么办 没有带数据线但是需要用到手机的摄像头怎么办 下面是采用软件的方式连接电脑作为电脑摄像头的方法 1 iVcam iVCam Use mobile phone as a PC web
  • Conda建立虚拟环境及torch安装

    本人的系统环境 Ubuntu 16 04 Cuda 9 0 Cudnn 7 0 5 Python 3 7 Anaconda 3 这里推荐大家使用Anaconda 可以比较方便的创建Python虚拟环境 避免不同的Python库之间产生冲突
  • 随笔篇-多线程世界的来龙去脉

    文章目录 线程 多线程带来的问题 线程的挂起与唤醒 线程的管理 如果看官觉得有点用 点赞一下 鼓励一下我吧 感谢原创的整理 以下是原文作者连接 原文 https zhuanlan zhihu com p 122010626 以下为摘抄概要整
  • 2020web前端面试整理

    背景 2020年是比较特殊的一年 由于新冠影响导致很多事情发生了变化 同时也改变了人们的一些常规习惯 就拿换工作来说 为了减少大家的出行和接触 线上视频 电话面试成了趋势 但是万变不离其宗 技术才是王道 下面是个人近期的一些面试经验和需要大
  • 保留指定位数小数点的方法(五种)

    package feifan import java text DecimalFormat import java text NumberFormat public class YuoXiaoShuzi public static void
  • slice+append陷阱

    1 前言 今天在网上看slice扩容原理 偶然看到一个slice的题目 感觉很有意思 题目如下 package main import fmt func main s1 int 1 2 s2 s1 s2 append s2 3 Test1
  • 随笔之---maven的知识

    1 maven metadata xml 这个文件是干嘛的 2 setting 中 是啥 表示所有依赖仓库的获取 走 这里 例如 任何仓库的请求 都被转到 下面的地址 如果 不是 是central则关于 中央仓库的请求会转到 下面的地址
  • 蓝牙协议规范--L2CAP

    L2CAP 分析 记住一点 软件和硬件分开理解 数据经由物理通道交互 上层通道由各层协议打通 L2CAP 全称为逻辑链路控制与适配协议 Logical Link Control and Adaptation Protocol 位于基带层之上
  • 没有安稳的工作(几年前帖子,私密变公开后时间就变了)

    上个月请假 发现公司在网上立即招人了 上周请假 发现公司又在网上招人了 试用期还没有过 如果按照这个情况 真是哪里都不安稳 双向选择吧 不过这个公司确实人才济济 能学到很多东西 虽然给我的工资是应届优秀硕士生的工资
  • 集合的初始容量与扩容

    arraylist 0 50 linkedlist 0 链表每次加一 hashmap 16 加载因子0 75 超过容量的0 75才会进行扩容 扩容 容量的2倍 2 当某个桶的链表长度达到8 就转成红黑树

随机推荐

  • Jupyter notebook快速入门教程

    本篇将给大家介绍一款超级好用的工具 Jupyter notebook 为什么要介绍这款工具呢 如果你想使用Python学习数据分析或数据挖掘 那么它应该是你第一个应该知道并会使用的工具 它很容易上手 用起来非常方便 是个对新手非常友好的工具
  • Matlab快速创建矩阵的方法(创建特殊矩阵)

    在matlab的使用过程中经常会需要用到矩阵 有时想要创建一些数据比较多的矩阵 对矩阵的内容要求可能并不高或者要创建一些特殊矩阵 下面将提供一些matlab内部提供的一些快速创建矩阵的方法 1 创建单位矩阵 eye n 创建n n的单位矩阵
  • GitHub托管HTML页面,让其他人轻松访问自己的页面

    如何通过GitHub来托管自己写的HTML页面 能够轻松让其他人访问你的页面 还可以通过GitHub让多人参与进来你的项目 以下是详细步骤 1 创建账户 登陆https github com 注册成功 1 https guides gith
  • SpringBoot2.0学习笔记:(九) Spring Boot中集成Mybatis与Druid

    一 项目的搭建 Druid对Spring boot做了很好的适配 所有的工作都只需要在配置文件中完成 具体的Druid在Spring Boot中的配置可以看 GitHub文档 首先看一下项目引入的jar包
  • flink学习46:flinkSQL自定义函数

    标量函数 实例 表值函数 聚合函数
  • 点击登录按钮弹出登录模态框

  • 拯救者y7000笔记本VMware虚拟机打开蓝屏问题

    VMware虚拟机安装后开启虚拟机蓝屏检查步骤 一 必须确定你的CPU开启了虚拟化才行 要先开启虚拟化再去控制面板里设置 查看是否开启虚拟化方法 在win10系统最下方任务栏空白处 右键鼠标打开任务管理器 也可以点击快捷键Ctrl Alt
  • go语言实现邮件发送

    go语言实现邮件发送 安装相关的包 go get github com jordan wright email 代码篇 package main import fmt github com jordan wright email log n
  • Zotero软件与ChatGPT连用模版

    Zotero软件与ChatGPT连用模版 整体流程 其他配置 全文 AskPDF position 10 color 0EA293 trigger 本文 这篇文章 论文 You are a helpful assistant Context
  • 缓存一致性问题解决方案

    通常情况下 我们使用缓存的主要目的是为了提升查询的性能 大多数情况下 是这样使用缓存的 当数据库有数据更新时 在很长的一段时间内 决定于缓存的过期时间 用户请求从缓存中获取到的都可能是旧值 而非数据库的最新值 那么 该如何更新缓存呢 目前有
  • Python实现电商订单的数据分析

    一 数据信息 数据集 阿里云天池 数据来源 说明 本数据集共有104557条数据 共计11个字段 字段 id 序号 orderID 订单id userID 用户id goodsID 商品id orderAmount 订单总额 payment
  • 【Python刷题】P1

    Python刷题P1 第一题 第二题 第一题 1 给定一个非空的字符串 s 检查是否可以通过由它的一个子串重复多次构成 示例 1 输入 s abab 输出 true 解释 可由子串 ab 重复两次构成 示例 2 输入 s aba 输出 fa
  • C语言程序设计(谭浩强第五版)——例题

    C语言程序设计 谭浩强第五版 例题 第1章 程序设计和C语言 第2章 算法 程序的灵魂 第3章 最简单的C程序设计 顺序程序设计 第4章 选择结构程序设计 第5章 循环结构程序设计 第6章 利用数组处理批量数据 第7章 用函数实现模块化程序
  • 【算法基础】基于pytorch的BP神经网络算法代码+数据集

    实现功能 1 数据回归 基于多输入单输出数据集 2 代码最后使用matplotlib绘制了 训练次数 loss值 折线图进行训练结果展示 注 1 代码亲测可成功运行 2 以下代码通过cuda调用GPU训练 如果cuda报错则需检查GPU训练
  • python基础学习06_if条件判断(多重判断、嵌套、三目运算)

    一 条件语句 条件成立执行某些代码 条件不成立执行哪些代码 二 IF 条件判断 IF简单条件判断 多重判断 IF嵌套 三目运算符 1 if 简单条件判断 if if True print 条件成 执 的代码1 print 条件成 执 的代码
  • 微信小程序开发记录(一)弹出框和模态框介绍

    弹出框和模态框的简介和使用方法如下
  • k8s踩坑2——scheduler 、controller-manager Unhealthy

    查看master组件状态时出现错误 root k8s master kubectl get cs Warning v1 ComponentStatus is deprecated in v1 19 NAME STATUS MESSAGE E
  • ActiveMQ Redelivery Policy(消息重发策略)

    官方文档 http activemq apache org redelivery policy html 在事务控制里抛出异常 txManager会进行rollback处理 在activeMQ里 消息默认会redelivery到客户端6次
  • 教你用Mock实现复杂登陆接口下如何优雅的获取Token

    哈喽大家好 我是阿Q 背景 今天又双叒叕被抓壮丁了 被安排进了新的项目组进行任务开发 加入新项目后的第一件事 当然是先研究下同事的代码喽 在 学习 代码的过程中竟然惊奇的发现同事写了测试用例 对于一直使用PostMan来进行接口测试的我表示
  • MultipartFile中transferTo(File file)的路径问题

    今天看到layui的文件上传的控件 就尝试了一下 简单创建了一个SpringMVC项目 记得在配置文件中注入以下Bean