SpringBoot项目打成jar包后上传文件到服务器 目录与jar包同级问题

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

 

因为我们无法操作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");
FileUtils.copyInputStreamToFile(inputStream, uploadFile);

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

spring:
   resources: 
      static-locations: classpath:/META-INF/resources/,classpath:/resources/,
classpath:/static/,classpath:/public/,file:static/

SpringBoot项目下获取File对象的方法:

public static File createFile(String filePath){
		File path = null;
		try {
			path = new File(ResourceUtils.getURL("classpath:").getPath());
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (!path.exists()) {
			path = new File("");
		}
		File upload = new File(path.getAbsolutePath(), filePath.substring(0,filePath.lastIndexOf("/")+1));
		if (!upload.exists()) {
			upload.mkdirs();
		}
		return new File(path.getAbsolutePath(), filePath);
	}

新建的目录位置:

  如果是开发环境:则会在项目目录下的 target\classes下创建目录;

  如果是打成jar包后运行,则会在jar包的同级目录下创建目录。

 

 

 

 

要在Spring Boot项目中实现负载均衡,并将上传的文件保存在服务器目录中,需要遵循以下几个步骤: 1.创建Spring Boot项目:首先,需要创建一个Spring Boot项目。可以选择使用IDE工具创建一个基本模板,并在pom.xml文件中添加必要的依赖库(例如Spring Web和Spring Boot DevTools)。 2.实现文件上传功能:在Spring Boot项目中实现文件上传功能,可以使用Spring的MultipartFile类,它使得上传文件变得简单。要将上传的文件保存在服务器目录中,需要一些常规的Java文件IO操作。在控制器中,可以通过使用@requestMapping注释处理文件上传请求,并用@Value注释注入目标目录。 3.设置负载均衡:使用Spring Cloud集成负载均衡器,可以轻松地将请求转发给多个服务,从而可提高系统的可用性。使用Spring Cloud负载均衡器,需要从pom.xml文件中添加相应的依赖。在Spring Boot项目中使用负载均衡器时,需要使用Spring Cloud的@LoadBalanced注释实现“客户端负载均衡”。 4.保存文件目录:将上传的文件保存到目录jar包同级,可以使用Java中的路径工具类,例如Path和Files类实现。也可以使用Spring Boot提供的特殊类PathUtils,将文件路径设置为“classpath:/static”即可。 综上,可以采取以上步骤,并使用Spring Cloud集成负载均衡器应对大量请求,实现将上传的文件保存在服务器目录jar包同级
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值