• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

SpringBoot上传文件到本服务器 目录与jar包同级问题

springboot 搞代码 4年前 (2022-01-05) 41次浏览 已收录 0个评论

这篇文章主要介绍了SpringBoot上传文件到本服务器 目录与jar包同级问题,需要的朋友可以参考下

前言

看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了。
当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源。但是当你使用SpringBoot的jar包发布项目的时候,你会发现,你不能像以前一样操作文件了。当你使用File file = new File()的时候根本不知道这个路径怎么办。而且总不能很小的项目也给它构建一个文件服务器吧。所以这次就来解决这样的问题。
不想知道细节的,可以直接跳转到最后封装的部分,里面有相应的实现。

原因

其实原因你也想的到,你无法对jar包里面的资源进行操作,而对于springboot项目来说,你只能读取里面的文件,只能使用InputStream。使用如下方式针对资源文件进行读取:

 ClassPathResource classPathResource = new ClassPathResource("static/a.txt"); classPathResource.getInputStream();

其中,这个a.txt存放在resources/static目录下

通过上述方式可以获取a中的内容

实现

因为我们无法操作jar包内容,所以我们只能将文件存放在别的位置,与jar包同级的目录是一个不错的选择。

首先获取根目录

 File path = new File(ResourceUtils.getURL("classpath:").getPath()); if(!path.exists()) { path = new File(""); }

然后获取需要的目录,我们设定我们需要将文件存放在与jar包同级的static的upload目录下

 File upload = new File(path.getAbsolutePath(),"static/upload/"); if(!upload.exists()) { upload.mkdirs(); }

然后当我们要将上传的文件存储的时候,按照下面的方式去新建文件,然后使用你喜欢的方式进行存储就可以了。

 File upload = new File(path.getAbsolutePath(),"static/upload/test.jpg-600"); FileUtils.copyInputStreamToFile(inputStream, uploadFile);

不要忘记

你需要在application.yml配置中加入以下代码,指定两个静态资源的目录,这样你上传的文件就能被外部访问到了。

 spring: # 静态资源路径 resources: static-locations: classpath:static/,file:static/

这样就能实现上传文件

最后的封装

工具类:

https://github.com/LinkinStars/springBootTemplate/blob/master/src/main/java/com/linkinstars/springBootTemplate/util/FileHandleUtil.java

这个工具类依赖了

 compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.3.1' compile group: 'commons-io', name: 'commons-io', version: '2.4'

如何你不喜欢完全可以根据自己的喜欢改变

如何使用:

 /** * 测试文件上传 */ @RequestMapping("/upload") @ResponseBody public String upload(MultipartFile file) throws IOException { return "文件存放路径为" + FileHandleUtil.upload(file.getInputStream(), "image/", file.getOriginalFilename()); }

最后效果

Follow up

这个工具类只是实现了如何上传文件,入参也只有InputStream,后续如何你需要接入参数File或者加入文件名防重复等等,就由你来完成了。

总结

以上所述是小编给大家介绍的SpringBoot上传文件到本服务器 目录与jar来源gao@!dai!ma.com搞$$代^@码!网包同级问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

以上就是SpringBoot上传文件到本服务器 目录与jar包同级问题的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:SpringBoot上传文件到本服务器 目录与jar包同级问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址