linux 下部署springboot 配置上传文件路径 Caused by: java.io.IOException: Unexpected output data-程序员宅基地

技术标签: java  linux  mybatis3  mybatisplus  springboot  

问题描述

springboot linux 上传图片, 本地配置上传文件路径可以使用,但是Linux系统配置和本地环境不一样。

我按照网上说的配置这个,但是本地是例如:D://temp//

发现这两个配置是一样的

然后部署服务是上传文件时候报错如下:

解决:

后来经过半天调试测试发现,window文件目录和Linux目录是不一样的,例如:

window和 Linux 是这样的写的:

String os = System.getProperty("os.name");
File imagePath;
String imageTemp;
String datePath = dateFormat.format(new Date());
if (os.toLowerCase().startsWith("win")) {
    //windows系统
    String path = System.getProperty("user.dir");  //获取项目相对路径 
    imageTemp = path+"\\src\\main\\resources\\static\\images\\"+datePath;
}else{
    //linux系统
    //如果是linux环境下,目录为jar包同级目录
    File rootPath = new File(ResourceUtils.getURL("classpath:").getPath());
    if(!rootPath.exists()){
         rootPath = new File("");
    }
    imageTemp = rootPath.getAbsolutePath()+"/images/"+datePath;
}

这样就可以获取当前jar 文件的目录位置,可以对两个平台进行兼容。更多代码参考文档:springboot项目实现图片和文件上传,上传之后在前端页面进行展示以及下载(Linux+Windows) - QiuC - 博客园

我花费1天的时间终于找到问题的所在,之前问题一直在这里报错。

multipartFile.transferTo(imageResultPath);

后来经过测试发现是文件路径没有配置对,修改成正确的路径后发现上传成功。

imageResultPath 关键在于这个路径位置,Linux和window是不一样的。希望对你有帮助少花费时间去解决这个问题。

学习技术欢迎加入QQ群交流学习:216022706

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lz201104/article/details/123953065

智能推荐

python使用seaborn对上海的二手房数据进行分析_上海二手房房价可视化分析-程序员宅基地

文章浏览阅读667次。python数据分析_上海二手房房价可视化分析

关于goland2021.1无法debug的问题解决方案_goland无法debug-程序员宅基地

文章浏览阅读7.4k次。来到这里的看官估计要喷我了,心想估计又是千篇一律的复制的文章,这里告诉你,让您失望了。初转go,发现无法debug根本没法干活,难受,旁边的小老弟dubug的飞起,咱老干部在这干着急啊,幸好时间已经是周五了,决定在家一定要好好搞一搞这玩意。IDE的部分问题没截图(没心情啊,失落),除问题时的配置我大概说一下:go version: go1.16.8 darwin/amd64goland:2021.1.2,依稀记得看版本信息里有个x86_64mac:11.5.1,M1当我debug我的_goland无法debug

Android修改ro.debuggable 的四种方法-程序员宅基地

文章浏览阅读2.7w次,点赞15次,收藏71次。目录一、使用一键Root工具二、使用mprop工具(重启失效)三、Magisk 重置 ro.debuggable (重启失效)四、MagiskHide Props Config 模块修改(永久有效)查看getprop ro.debuggable的值:adb shell getprop ro.debuggable一、使用一键Root工具使用Root工具,一键root后ro.debuggable一般就为1了常见的root工具:KingRoot、360超级Root、百度一键Ro_ro.debuggable

洛谷——P1075 [NOIP2012 普及组] 质因数分解_【noip2012普及组】质因数分解c++-程序员宅基地

文章浏览阅读480次。P1075 [NOIP2012 普及组] 质因数分解题目描述已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数。输入格式一个正整数nn。输出格式一个正整数pp,即较大的那个质数。输入输出样例输入 #1复制21输出 #1复制7java:package com.kk.luogu;import java.util.Scanner;//P1075 [NOIP2012 普及组] 质因数分解public class P1075 { public stati_【noip2012普及组】质因数分解c++

基于PysimpleGUI+pymysql建立的简单管理系统(6)—查找功能_pysimplegui 管理系统-程序员宅基地

文章浏览阅读116次。基于PysimpleGUI+pymysql建立的简单管理系统(6)_pysimplegui 管理系统

Java工作流详解(附6大工作流框架对比)-程序员宅基地

文章浏览阅读1.4w次,点赞7次,收藏58次。Jflow是一个国产的开源工作流引擎,与业务场景结合紧密,再带表单引擎,数据表较多,中文概念较多,可配置型性强,支持作为中间件模式的集成。配置点集中在,节点属性,流程属性,方向条件。概念名词比较清晰,文档全面。有qq群技术支持。流程设计器界面干净,从节点类型分类,分流,合流,分合流,子线程等等。表单与流程完美结合,与其它几款流程引擎设计理念不同。Jflow更适用,贴近用户操作。表单引擎中的精华是审核组件,满足国内审批要求的需求,退回,分合流审核,会签,并行处理,队列处理,概念清晰,容易理解。_工作流

随便推点

YOLOv3训练自己的数据(linux)_imagenet预训练权重yolov3-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏14次。一、下载相关文件1.下载预训练权重文件YOLOv3使用在Imagenet上预训练好的模型参数的基础上继续训练。下载链接为https://pjreddie.com/media/files/darknet53.conv.74或使用wget命令下载:wget https://pjreddie.com/media/files/darknet53.conv.742.下载YOLOv3..._imagenet预训练权重yolov3

【vue】vue-Router 常见面试题_vue-router面试题-程序员宅基地

文章浏览阅读1w次,点赞15次,收藏160次。【vue】vue-Router 常见面试题文章目录【vue】vue-Router 常见面试题一、vue-Router基本使用二、常见面试题1.vue-router 路由钩子函数是什么 执行顺序是什么2. vue-router 动态路由是什么 有什么问题(1) params 方式(2) query 方式(3) params 和 query 的区别3.$route 和 $router 的区别4.Vue-Router 的懒加载如何实现5.vue-router 中常用的路由模式hash 模式history 模式6_vue-router面试题

vue+vuex+router初体验_vue安装zeromq-程序员宅基地

文章浏览阅读587次。前言本人是java开发出生,工作需要研究node/vue,在学习期间参照很多博文,书写示例代码,文中肯定会有很多不专业的地方,记录一方面用于自己梳理知识脉络,一方面方便日后查询,同时还可以让和我处于相同情况的码农们有个参考,废话不多说了,开始撸代码,这才是每个码农关心的问题.vue环境搭建没有详细了解的npm的伙伴们不要紧张,照着做就可以,用的多了就了解了,至于他是怎么实现的需要有精力的童鞋们研究,_vue安装zeromq

Swift 语句(Statements)_swfit did you mean to use a 'do' statement?-程序员宅基地

文章浏览阅读529次。在 Swift 中,有两种类型的语句:简单语句和控制流语句。简单语句是最常见的,用于构造表达式或者声明。控制流语句则用于控制程序执行的流程,Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制传递语句则用于修改代码的执行顺序。在稍后的叙述中,将会详细地介绍每一种类型的控制流语句。是否将分号(;)添加到_swfit did you mean to use a 'do' statement?

Android 自定义FloatView实现悬浮视图_android floatview-程序员宅基地

文章浏览阅读6.3k次,点赞2次,收藏9次。 前言:自定义FlaotView不需要任何权限,继承FrameLayout,通过WindowManager实现悬浮。资源文件:drawable、drawable-hdpi、layout菜单背景(menu_bg.xml):<?xml version="1.0" encoding="utf-8"?><selector ="http://s..._android floatview

python plt.subplot_Python Matplotlib subplot函数详解:创建子图-程序员宅基地

文章浏览阅读1.7k次。使用 Matplotlib 除可以生成包含多条折线的复式折线图之外,它还允许在一张数据图上包含多个子图。调用 subplot() 函数可以创建一个子图,然后程序就可以在子图上进行绘制。subplot(nrows, ncols, index, **kwargs) 函数的 nrows 参数指定将数据图区域分成多少行;ncols 参数指定将数据图区域分成多少列;index 参数指定获取第几个区域。sub..._python plt.subplot

推荐文章

热门文章

相关标签