springboot 项目jar包后上传到 服务器目录

8 篇文章 0 订阅
5 篇文章 0 订阅

开场白:老铁们对于文章有错误、不准确,或需要补充的请留言讨论 ,大家共同学习。如果觉得还不错的请关注、留言、点赞 、收藏。 创作不易,且看且珍惜

springboot 项目jar包后上传到 服务器目录

当我们项目上传文件事,大点项目会把文件上传到 对象存储 或是自己的文件服务器 。小项目会存储到服务器上 但又不能存储到项目当中,存储到项目当中每次更新项目时,上传的文件时文件对丢失,所以我们都会存储到项目jar外,服务器上的,这样文件就不会每次更新项目就丢失了 。
对于war包我们可以修改tomcat配置文件路径 可以参考我的另一篇博客 Tomcat 配置上传文件到项目外的路径

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

server:
  # 服务器的HTTP端口,默认为8080
  port: 8080
  servlet:
    # 应用的访问路径
    context-path: /demo


domain: http://127.0.0.1:8080${server.servlet.context-path}
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.io.Serializable;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;
import java.util.List;

@Slf4j
public class FileUtil{

	// 文件存放位置: /fileupload/images 服务器根路径;  fileupload/images 项目jar同级目录
	private static String UPLOAD_PATH = "/fileupload/images";
	
		//服务器域名
	    @Value("${domain}")
	    private String domain;
	
	 @PostMapping("/upload")
	    public String upload(MultipartFile file) {
	        if (file.isEmpty()) {
	            AjaxResult.error("请上传文件!");
	        }
	        String fileName = file.getOriginalFilename().toLowerCase();
	        if(!fileName.endsWith("png")&&!fileName.endsWith("jpg")){
	            AjaxResult.error("文件格式错误!仅支持png/jpg");
	        }
	        int lastIndexOf=fileName.lastIndexOf(".")+1;
	        String suffix = fileName.substring(lastIndexOf);
	        try {
	            String name = IdUtil.simpleUUID()+"."+suffix;
	            Path directory = Paths.get(UPLOAD_PATH);
	            InputStream inputStream = file.getInputStream();
	            if (!Files.exists(directory)) {
	                Files.createDirectories(directory);
	            }
	            Files.copy(inputStream, directory.resolve(name));
	            String filePath = domain+UPLOAD_PATH + "/" + name;
	            return filePath;
	        }catch (Exception e){
	            log.error("上传banner失败!",e.getMessage());
	            return null;
	        }
	    }
}

此时可以上传 但是通过路径我们无法访问文件。项目上要进行配置。

springboot 2

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 资源映射路径
 */
@Configuration
public class MyWebAppConfigurer implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
		/**
         * 资源映射路径
         * addResourceHandler:访问映射路径
         * addResourceLocations:资源绝对路径
         */
		//linux
        registry.addResourceHandler("/fileupload/**").addResourceLocations("file:/fileupload/");
		//windows        
		//registry.addResourceHandler("/fileupload/**").addResourceLocations("file:D:/fileupload/");
    }

}

springboot 1.0

@Configuration
public class MyWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        /**
         * 资源映射路径
         * addResourceHandler:访问映射路径
         * addResourceLocations:资源绝对路径
         */
        registry.addResourceHandler("/image/**").addResourceLocations("file:D:/temp/image/");
    }
}

当然 项目拦截器等都要放行 也要 放行,如不验证token等。 当然如果你是用的docker 部署 也要把fileupload 文件夹透出到服务器上。

也可参考: http://t.zoukankan.com/dw3306-p-10440735.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值