前言

今天在帮朋友看文件上传问题的时候,发现上传的文件虽然上传到本地路径或者项目文件下了,但是访问却访问不到,要重新启动项目才可以。

找了下网上的解决方案,不一而足,在此收集我试了可以用的方案

文件存储在编译文件下

按下面这个代码可以将文件存在编译文件下 ,也就是target/classes下面

String path = "/static/upload/";
File file1 = null;
try {file1 = new File(ResourceUtils.getURL("classpath:").getPath());
} catch (FileNotFoundException e) {// nothing to do
}
if (file1 == null || !file1.exists()) {file1 = new File("");
}String savePath = file1.getAbsolutePath()+path;

不过这样并没有存储在项目下,所以项目如果clean一下那么这些文件将都会消失,不过对与某些项目来说只有开始和停止,也并没有重新部署的必要。

或者完全可以利用这一特点,存储临时文件,项目重新编译时文件消失。

配置访问虚拟路径

文件实际是存在e盘的path路径下面,但是当访问http://ip:port/upload/xxx.jpg时,虚拟路径会映射到file://e:/path/xxx.jpg的路径中访问文件。也是对服务器文件的一种保护措施吧.

启动类集成WebMvcConfigurationSupport

@SpringBootApplication
public class DemoApplication extends WebMvcConfigurationSupport {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {System.out.println("config启动了");//项目路径//String savePath = "\\src\\main\\resources\\static\\upload\\";//String path = System.getProperty("user.dir")+savePath;//本地路径String path = "e:/path/";registry.addResourceHandler("/upload/**").addResourceLocations("file:"+path);}
}

实现配置类WebMvcConfigurer

@Configuration
public class MyPicConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {System.out.println("config启动了");//项目路径//String savePath = "\\src\\main\\resources\\static\\upload\\";//String path = System.getProperty("user.dir")+savePath;//本地路径String path = "e:/path/";registry.addResourceHandler("/upload/**").addResourceLocations("file:"+path);}
}

【文件上传】——文件上传后需要重启服务器方可访问到异常相关推荐

  1. Linux上监控tomcat down掉后自动重启tomcat

    Linux上监控tomcat down掉后自动重启tomcat 解决思路 Linux上监控tomcat down掉后自动重启tomcat 第一步编辑:monitor.sh文件(文件内容看下文) 第二步 ...

  2. 修改服务后 如何重启服务器,修改远程端口号后如何重启服务器

    修改远程端口号后如何重启服务器 内容精选 换一换 本章节讲解如何通过Mind Studio界面的Device Management菜单管理设备信息.设备管理功能提供了增加.删除.修改等能力,方便使用者 ...

  3. 解决存储阵列无法挂载,或者挂载成功后,重启服务器后存储阵列又要重新挂载

    环境:ubuntu18.04 问题:我要把存储阵列挂载到目录/public,但是这个目录无法挂载存储阵列,或者挂载成功后,重启服务器后存储阵列又要重新挂载,而挂载到其他目录就没有问题. 原因分析:/p ...

  4. 远程桌面连接不上,三种方法教你重启服务器

    方法一:使用windows自带的shutdown命令,远程重启服务器 当远程桌面连接服务无法顺利使用后,我们首先要确定的是服务器是否真的死机.我们可以通过ping目标服务器IP看是否畅通或者访问该服务 ...

  5. vue打包后不使用服务器直接访问方法

    根据官网打包执行npm run build 后dist文件夹打开的index.html 是空白 需要开启http服务器才能访问,以下是解决办法 1.找到config文件夹下的index文件 修改成 2 ...

  6. 将/etc/locale.conf文件修改为LANG=zh_CN.UTF-8后,重启or注销重新登录后失效

    首先描述一下我的情况,我的启动界面是默认命令行界面,但是根据"Linux LANG变量设置:定义系统的主语系环境"这篇文章的描述: 我们需要解释一下 Linux 中文支持的问题.是 ...

  7. Esp8266的Flash读写操作以及Flash上传文件

    1.Flash的读写操作 Esp8266的Flash为4M,其中1M用于存储程序,其他的空间有一部分用于系统,3M中剩下的大部分空间可以用来存放文件. #include <FS.h> St ...

  8. 阿里云轻量应用服务器 怎么控制怎么上传文件怎么安装JDK和Tomcat怎么完成JavaWeb的部署...

    你是否遇到过这些问题,自己的javaweb项目本地运行一切正常,但是一旦转移到阿里服务器之类的.就出现以下问题. 1 jsp无法解析java类 2 Only a type can be importe ...

  9. 修改js文件需要重启服务器,关于Node.js中频繁修改代码重启服务器的问题

    我们可以使用一个第三方命名行工具,nodemon 来帮我们解决频繁修改代码重启服务器问题. nodemon 是一个基于 Node.jsNode.js 开发的第三方命令行工具,我们使用的时候需要独立安装 ...

最新文章

  1. java 泛型反射_Java使用反射来获取泛型信息示例
  2. 登上更高峰!颜水成、程明明团队开源ViP,引入三维信息编码机制,无需卷积与注意力...
  3. IPv6 — 协议头
  4. quartz 报错:java.lang.classNotFoundException
  5. Springboot集成Shiro+Redis后,@Transactional注解不起作用
  6. Python编程:制作电子相册
  7. 让不带www的域名跳转到带www的域名
  8. windows phone 了解LinearGradientBrush类和RadialGradienBrush类(11)
  9. App测试的11点建议
  10. CSharp_DevExpress_DXperience_Universal_11.1.6 下载+源码+编译
  11. Sybase数据库整体迁移纪要
  12. LumaQQ开发文档
  13. Filter 实现图片转发
  14. Android开发:Shape详细解读
  15. MongoDB使用账号密码连接
  16. IT咨询和IT外包有什么区别?
  17. UI设计教程之常见的APP小图标类型以及用途梳理
  18. SAP ABAP OO ALV全屏显示
  19. git提交用户名与当前用户名不止一致(或者邮箱)
  20. 菲律宾的光伏市场只有一个字概况:穷

热门文章

  1. 基于DGL库图神经网络教程(1)——基本的建图操作
  2. 【Go语言实战】(4) 简简单单的几十行代码实现 TCP 通信
  3. 腾讯云web应用防火墙(WAF)防护设置步骤介绍
  4. Linux驱动之DMA
  5. Nginx下https模式下,不带www的域名无法自动跳转到带www域名的问题
  6. 爆笑,2008最新一句话笑喷饭!
  7. 蚂蚁IPO有人欢呼,也有前员工建群,​群名“错失几千万的人”
  8. 枯燥的生活需要每日情话
  9. 《Lost》大结局最权威最彻底解读
  10. 【初学python】实例七:七段数码管绘制