springboot创建文件无法读取问题复盘

简介: springboot创建文件无法读取问题复盘

问题描述



通过springboot创建出来的项目,在项目里会有将文件存储到后端服务器的动作,文件存储后默认的权限是rw--------- root root 也就是说除了root具有读写的权限,其他所有用户都没有任何权限。现在想要做个文件预览功能,就需要对他进行可读。


问题解决思路


既然问题出现在创建的权限之上,首先想到的就是解决权限问题,将文件的创建权限改成rw-r-r即可。


问题解决过程



1.根据上面问题的解决思路首先去配置了/etc/bash.bashrc文件,在该文件末尾加了umask 0022(这样修改理论上所有用户创建的文件权限都是644,也就是rw-r-r),然后重新加载该文件source /etc/bash.bashrc之后,登录服务器验证权限修改是否生效:在目录下创建了个文件,发现权限确实对了,然后登录系统使用系统进行上传文件,然后发现应用创建出来的文件权限还是没变,仍然是rw


2.此时感觉是有另外一个地方限制了这个权限,网络上搜索一通后发现一种说法tomcat的配置文件catalina.sh会对创建文件进行权限默认值的设定,这里默认设定就是只有rw----。此时感觉发现了问题的关键处,但是springboot的tomcat都是内置的,并没有catalina.sh这个文件。这可怎么整,然后找了一通发现这个并没有办法在springboot中进行设定,这条问题解决线路到这里就断了(若不是内置tomcat这个问题就很好解决,只需要找到catalina.sh中设定的umask值,进行更改成0022即可)。


3.上面没有成功解决问题,就只能更换思路了,默认创建出来的文件权限是rw------- root root ,那root用户是具有读写权限的,我若是将访问文件的用户设置成 root,这个问题解决也是ok的,下面就朝着这个反向进行重新努力。


4.经过一通搜索发现nginx确实支持这个,只需要我们在nginx.conf开头加入一个配置即可user root;这样通过nginx反向代理出来的静态资源,我们访问时默认都是使用root进行访问的,此时访问文件就有了读写的权限。这样问题就解决了。


总结



这个问题一开始其实解决就有两个角度:

更改文件创建时的默认缺陷

更改访问静态资源时的默认用户


笔者一开始只想到了第一种解决思路,一直在第一条路上深入找解决办法,到最后发现走入了死胡同,才转而想到了第二种,其实问题思考的初始阶段就应该建立好问题的整体思路,多方向进行思考,这样就可以在一条路上受阻后,在另外一条路上继续寻找解决方案。


相关文章
|
4月前
|
Java 容器
SpringBoot读取resources下的文件以及resources的资源路径
SpringBoot读取resources下的文件以及resources的资源路径
112 0
|
4月前
|
Java
SpringBoot文件上传单文件多文件上传
SpringBoot文件上传单文件多文件上传
35 0
|
13天前
|
XML 前端开发 Java
基于SpringBoot 3.3实现任意文件在线预览功能的技术分享
【8月更文挑战第30天】在当今的数字化办公环境中,文件在线预览已成为提升工作效率、优化用户体验的重要功能之一。无论是文档、图片、PDF还是代码文件,用户都期望能够直接在浏览器中快速查看而无需下载。本文将围绕如何在Spring Boot 3.3框架下实现这一功能,分享一系列技术干货,助力开发者高效构建文件预览服务。
88 2
|
2月前
|
存储 前端开发 Java
SpringBoot使用云端资源url下载文件的接口写法
在Spring Boot中实现从云端资源URL下载文件的功能可通过定义REST接口完成。示例代码展示了一个`FileDownloadController`,它包含使用`@GetMapping`注解的方法`downloadFile`,此方法接收URL参数,利用`RestTemplate`下载文件,并将文件字节数组封装为`ByteArrayResource`返回给客户端。此外,通过设置HTTP响应头,确保文件以附件形式下载。这种方法适用于从AWS S3或Google Cloud Storage等云服务下载文件。
249 7
|
27天前
|
JavaScript 前端开发 easyexcel
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
本文展示了基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的完整过程,包括后端使用EasyExcel生成Excel文件流,前端通过Blob对象接收并触发下载的操作步骤和代码示例。
146 0
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
|
18天前
|
Java Linux C++
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
|
24天前
|
存储 Java API
SpringBoot + MinIO 实现文件切片极速上传技术
【8月更文挑战第19天】在现代互联网应用中,文件上传是一个常见且重要的功能。然而,随着文件体积的增大,传统的文件上传方式往往面临效率低下、耗时过长等问题。为了提升大文件上传的速度和效率,我们可以采用文件切片上传技术,并结合SpringBoot和MinIO来实现这一功能。
98 0
|
29天前
|
Java
Java SpringBoot FTP 上传下载文件
Java SpringBoot FTP 上传下载文件
65 0
|
29天前
|
JavaScript Java
SpringBoot 下载文件
SpringBoot 下载文件
26 0
|
1月前
|
存储 运维 Java
SpringBoot使用log4j2将日志记录到文件及自定义数据库
通过上述步骤,你可以在Spring Boot应用中利用Log4j2将日志输出到文件和数据库中。这不仅促进了良好的日志管理实践,也为应用的监控和故障排查提供了强大的工具。强调一点,配置文件和代码的具体实现可能需要根据应用的实际需求和运行环境进行调优和修改,始终记住测试配置以确保一切运行正常。
241 0