当前位置:   article > 正文

java项目中上传的图片存放在部署的linux服务器目录下_个人项目上传图片存在哪里

个人项目上传图片存在哪里

为什么项目里上传的图片要存放在所部署的linux服务器目录下,而不是直接放在java项目里的静态目录下(webapp)?

因为当项目运行时把图片上传到java项目中静态目录下时,上传文件存储在了项目的target目录下,当项目下次重新部署时,需要把target目录下的上传的文件拷贝出来,重新加到项目里,这样就比较麻烦,万一把tomcat中webapps下的项目文件夹删除了,之前项目中上传的图片就丢了。

上传图片放在linux服务器目录下的好处

项目重新部署时,不需要向之前一样把target目录下的图片文件夹拷贝出来,而是直接部署即可,因为图片上传在了项目所部署的linux服务器目录下。

线上linux服务器tomcat配置具体步骤:

1.在tomcat的<Host>标签下配置

<Context path="/static" docBase="/home/application" reloadable="false"></Context>

2.在java项目properties配置文件中文件上传路径为 signatureDir =  /home/application,可以通过java代码在上传路径后面再拼接文件夹。

3.数据库中存放的是相对路径/static/2021/01/123.png,以tomcat中server.xml中配置的<Context>标签下的path="/static"开头(其中2021 01 都是文件夹)

4.前端读取图片时img的src="/static/2021/01/123.png"(其中2021 01 都是文件夹)

说明:图片路径映射方式是-> ip:8080/static会找到linux服务器下的文件夹/home/application,然后再找到/home/application下的两个文件夹2021和01,最后找到图片123.png。


本地测试时,tomcat配置的<Context>标签如下:

<Context path="/static" docBase="D:\develop" reloadable="false"></Context> 

本地测试时java项目properties配置文件中文件上传路径为 signatureDir =  D:\\develop

其他都相同,部分java代码仅供理解上文(*-*)

  1. byte[] resultBytes = Base64.decode(base64);
  2. Date date = new Date();
  3. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  4. String format = sdf.format(date);
  5. String[] splits = format.split("-");
  6. //获取图片存储路径
  7. String userfilesBaseDir = signatureDir;
  8. //根据年、月新建yyyy文件夹,MM文件夹
  9. //获取UUID,做图片名称
  10. String UUID = IdGen.uuid();
  11. //绝对路径,通过文件流生成图片
  12. String absPath=userfilesBaseDir+"/"+splits[0]+"/"+splits[1];
  13. String picFilePath =absPath+"/"+ UUID+".png";
  14. //相对路径,存入数据库
  15. String relaPath="/static/"+splits[0]+"/"+splits[1]+"/"+UUID+".png";
  16. File filePath =new File(absPath);
  17. boolean flag=true;
  18. //文件夹不存在,则创建
  19. if(!filePath.exists()){
  20. flag =filePath.mkdirs();
  21. }
  22. //文件夹创建失败则抛出异常
  23. if(!flag){
  24. throw new RuntimeException("***");
  25. }
  26. try {
  27. FileOutputStream out = new FileOutputStream(picFilePath);
  28. out.write(resultBytes);
  29. out.close();
  30. }catch (IOException e) {
  31. e.printStackTrace();
  32. }

参考文章:1.tomcat搭建图片服务器

                  2.base64编码的图片如何存入数据库

 

 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/715603
推荐阅读
相关标签
  

闽ICP备14008679号