springboot文件映射配置(文件路径)

一、基于yml 或者properties配置文件

上传的文件存放在某盘某目录下,如 E:/Practices/test

具体配置:

web:

  upload-path: E:/Practices/test

  front-path: E:/Practices

spring:

  resources:

    static-locations: file:${web.upload-path},file:${web.front-path}

访问方式:IP+端口/文件名

现在:http://localhost:8003/1442823076292.jpeg

注:不需要配置什么加载配置类,上传的文件到 E:/Practices/test。文件显示如上访问。

二、基于springboot配置类,改变原来的默认配置

此处不在赘述上传过程,简单描述它的上传思路:

上传的文件存放在某盘某目录下,如 E:/视频制作/图片/

通过配置文件类 WebMvcConfig 将本地存放文件目录映射到项目路径下,具体查看配置类

项目启动,加载配置类。

配置类如下:

@Configuration

public class WebMvcConfig extends WebMvcConfigurationSupport {

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

String path = "E:\\Practices\\";//"/tools/images/";//"E:/视频制作/图片/";

// 上传路径映射 会使spring boot的自动配置失效

registry.addResourceHandler("/image/**").addResourceLocations("file:" + path);

super.addResourceHandlers(registry);

}

}

意思:

项目访问image路径会直接访问path路径下的文件

访问方式:

原来:file:///E:/%E8%A7%86%E9%A2%91%E5%88%B6%E4%BD%9C/%E5%9B%BE%E7%89%87/1442823076292.jpeg

现在:

http://localhost:9001/image/1442823076292.jpeg

http://localhost:9001/image/one/1442823076292.jpeg

三、基于绝对路径访问

简单思路:

获取resources下的某目录,如static文件夹。获取方式如下:

File staticFilePath = ResourceUtils.getFile("classpath:static");

根据获得的路径,创建新的路径,并上传文件。详情查看AbsolutePathController的方法uploadToProject

基于默认配置,则不需要加配置类。

若加了配置类,改变原来的路径情况,需要补上:

public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");

super.addResourceHandlers(registry);

}

 

对比解析:上传的文件到项目的resources目录下,实际加载得到的文件是绝对路径下的文件如image/1442823076292.jpeg,主要的原理还是文件映射。访问的时候,直接http://localhost:9001/images/1442823076292.jpeg

注:不适用jar包形式启动的项目,楼主暂时没有找到好的方案,有好的方案,麻烦多多分享,谢谢。可以本地调试玩耍。生产上,建议使用外部路径

四、基于Nginx配置的访问

简单思路:

上传文件到某路径下,如C:/文件

使用Nginx服务器,配置访问路径并映射到文件上传的路径下

以下是Nginx的配置

基于alias配置

location /static/ {

   alias /var/www/static/;

}

alas会把指定路径当作文件路径

注意:alias指定的目录后面必须要加上"/",即/var/www/static/不能改成/var/www/static 访问http://IP:PORT/static/index.html时,实际访问的是/var/www/static/index.html 这种实现,类似 基于springboot配置类

基于配置root

location /static/ {

  root /var/www/;

}

root会把指定路径拼接到文件路径后,再进行访问

注意:location中指定的/static/必须是在root指定的/var/www/目录中真实存在的。 通过浏览器访问http://127.0.0.1:7001/static/t.txt,则访问服务器的文件是/var/www/static/t.txt

 

项目例子:

https://github.com/krycai/gc-framework/tree/master/gc-upload

 

讲解比较详细的例子:https://www.javatt.com/p/11507

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
springboot学习笔记 spring基础 Spring概述 Spring的简史 xml配置 注解配置 java配置 Spring概述 Spring的模块 核心容器CoreContainer Spring-Core Spring-Beans Spring-Context Spring-Context-Support Spring-Expression AOP Spring-AOP Spring-Aspects Messaging Spring-Messaging WEB Spring-Web Spring-Webmvc Spring-WebSocket Spring-Webmvc-Portlet 数据访问/集成(DataAccess/Intefration) Spring-JDBC Spring-TX Spring-ORM Spring-OXM Spring-JMS Spring的生态 Spring Boot Spring XD Spring Cloud Spring Data Spring Integration Spring Batch Spring Security Spring HATEOAS Spring Social Spring AMQP Spring Mobile Spring for Android Spring Web Flow Spring Web Services Spring LDAP Spring Session Spring项目快速搭建 Maven简介 Maven安装 Maven的pom.xml dependencies dependency 变量定义 编译插件 Spring项目的搭建 Spring Tool Suite https://spring.io/tools/sts/all IntelliJ IDEA NetBeans https://netbeans.org/downloads/ Spring基础配置 依赖注入 声明Bean的注解 @Component组件,没有明确的角色 @Service在业务逻辑层(service层) @Repository在数据访问层(dao层) @Controller在展现层(MVC→SpringMVC) 注入Bean的注解 @Autowired:Spring提供的注解 @Inject:JSR-330提供的注解 @Resource:JSR-250提供的注解 Java配置 @Configuration声明当前类是一个配置类 @Bean注解在方法上,声明当前方法的返回值为一个Bean AOP @Aspect 声明是一个切面 拦截规则@After @Before @Around PointCut JoinPoint Spring常用配置 Bean的Scope Singleton Prototype Request Session GlobalSession SpringEL和资源调用 注入普通字符 注入操作系统属性 注入表达式云算结果 注入其他Bean的属性 注入文件内容 注入网址内容 注入属性文件 Bean的初始化和销毁 Java配置方式 注解方式 Profile @Profile 通过设定jvm的spring.profiles.active参数 web项目设置在Servlet的context parameter中 事件Application Event 自定义事件,集成ApplicationEvent 定义事件监听器,实现ApplicationListener 使用容器发布事件 Spring高级话题 Spring Aware BeanNameAware BeanFactoryAware

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值