【Java】服务器文件存储问题
问题:
服务器重新部署war包后,项目下上传到服务器的图片会丢失
解决方法:
通过tomcat虚拟目录来实现上传文件的分开存储,通过对服务器类型的判断来指定上传路径。
Java判断服务器操作系统类型,用来区分本地测试上传路径和服务器上传路径:
String imageDir = "/images/upload/";
//判断本地windows还是服务器linux
String os = System.getProperty("os.name");
String directory = imageDir;
if(os.toLowerCase().startsWith("win")){
directory = request.getSession().getServletContext().getRealPath(imageDir);
}
修改tomcat的server.xml,<Host>
中添加
<Context path="/images/upload" docBase="/images/upload" debug="0" reloadable="true"/>
这样就可以吧图片存储在服务器的/images/upload
路径,通过/images/upload/1.jpg
来获取图片了
以上方法可以解决腾讯云的问题,本地的IDEA和新浪云,启动tomcat的方式不像手动启动服务器一样,server.xml的修改都不太好用,还是需要对专门的服务器来确定对应存储方式,类似新浪云应该用他的Storage。
以后需要了解更多其他方式的存储,或者考虑图片直接base64存数据库什么的。