Java上传图片到服务器路径获取系列之--图片保存到Tomcat的webapps目录下

 

2017年08月01日 20:27:46

阅读数:14946

Java上传图片到服务器路径获取系列之--图片保存到Tomcat的webapps目录下

note:有差错或不足之处请批评指正,谢谢!
上一篇介绍了Java web项目中把客户端上传的图片保存到服务器中web工程下的指定文件夹里,但是这样存在一个弊端:因为保存图片的文件夹在项目工程文件下,所以,当项目文件更新版本的时候,就会覆盖掉原来保存图片的文件夹,造成上传文件的丢失。为了解决这个问题,进行了多方尝试,总结了以下可行方案。
1.服务端保存客户端上传的图片
(1)在Tomcat的webapps目录下创建保存上传图片的文件夹pic_file,

(2)后台获取文件夹pic_file的路径,并保存上传的图片,示例代码如下:

 
  1. public static String uploadFile(MultipartFile file,HttpServletRequest request) throws IllegalStateException, IOException{

  2. Logger logger = Logger.getLogger(UploadImg.class);

  3. if(file!=null){

  4. //获取上传文件的原始名称

  5. String originalFilename = file.getOriginalFilename();

  6. String newFileName ="";

  7. String pic_path;

  8. // 上传图片

  9. if ( originalFilename != null && originalFilename.length() > 0) {

  10. //获取Tomcat服务器所在的路径

  11. String tomcat_path = System.getProperty( "user.dir" );

  12. System.out.println(tomcat_path);

  13. //获取Tomcat服务器所在路径的最后一个文件目录

  14. String bin_path = tomcat_path.substring(tomcat_path.lastIndexOf("\\")+1,tomcat_path.length());

  15. System.out.println(bin_path);

  16. //若最后一个文件目录为bin目录,则服务器为手动启动

  17. if(("bin").equals(bin_path)){//手动启动Tomcat时获取路径为:D:\Software\Tomcat-8.5\bin

  18. //获取保存上传图片的文件路径

  19. pic_path = tomcat_path.substring(0,System.getProperty( "user.dir" ).lastIndexOf("\\")) +"\\webapps"+"\\pic_file\\";

  20. }else{//服务中自启动Tomcat时获取路径为:D:\Software\Tomcat-8.5

  21. pic_path = tomcat_path+"\\webapps"+"\\pic_file\\";

  22. }

  23. // 新的图片名称

  24. newFileName =UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));

  25. logger.info("上传图片的路径:" + pic_path + newFileName);

  26. // 新图片

  27. File newFile = new File(pic_path + newFileName);

  28. // 将内存中的数据写入磁盘

  29. file.transferTo(newFile);

  30. }

  31. return newFileName;

  32. }else{

  33. return null;

  34. }

  35. }

2.客户端显示图片

(1)后台获取封装显示路径

 
  1. public ModelAndView GetById(int nid,HttpServletRequest request) throws SocketException {

  2. ModelAndView mv = new ModelAndView();

  3. mv.setViewName("jsp/pic_show_test");

  4. Notice notice = noticeService.GetById(nid);

  5. mv.addObject("person_name",notice.getPerson_name());

  6. mv.addObject("title",notice.getNotice_title());

  7. mv.addObject("content",notice.getNotice_content());

  8. Date notice_time = notice.getNt();

  9. mv.addObject("notice_time",new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(notice_time));

  10. //封装图片显示路径(根据当前访问的客户端请求的地址来封装)

  11. String request_path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort();

  12. String img_name = request_path + "/pic_file/"+notice.getNotice_img();

  13. //或者直接用下面的相对路径封装

  14. String img_name = "../pic_file/"+notice.getNotice_img();

  15. mv.addObject("img_name",img_name); return mv;

  16. }

(2)前端显示图片:pic_show_test.jsp页面

 
  1. <div class="col-img">

  2. <img src=${img_name} />

  3. </div>

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sophiaFXR/article/details/76552135

猜你喜欢

转载自blog.csdn.net/qq_41731166/article/details/81066993
今日推荐