600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 解决在IDEA中部署Tomcat图片储存和虚拟访问路径 以及解决部署到服务器中上传图片后无

解决在IDEA中部署Tomcat图片储存和虚拟访问路径 以及解决部署到服务器中上传图片后无

时间:2024-02-06 08:00:36

相关推荐

解决在IDEA中部署Tomcat图片储存和虚拟访问路径 以及解决部署到服务器中上传图片后无

这是在项目中遇到了上传图片的功能,遇到了需要配置Tomcat的图片存储路径到虚拟访问路径的问题,特地记录一下,在其中遇到了部署到服务器时上传图片后无法直接回显的问题,也对其进行了问题的解决。

上传图片的代码:

// 上传图片public void fileUpload(FileUploadEvent e) {String uploadedFileName = e.getFile().getFileName();String newFileName = System.currentTimeMillis() + uploadedFileName.substring(uploadedFileName.lastIndexOf("."));File targetFile = new File(photoOutPath + newFileName);File parentFile = targetFile.getParentFile();if (!parentFile.exists()) {parentFile.mkdirs();}// photoOutPath : 图片的存放路径if (StringUtils.isNotBlank(this.selectedRecord.getPhotoFileName())) {File existsFile = new File(photoOutPath + this.selectedRecord.getPhotoFileName());existsFile.delete();}try (FileOutputStream outputStream = new FileOutputStream(targetFile);) {IOUtils.write(IOUtils.toByteArray(e.getFile().getInputstream()), outputStream);outputStream.flush();this.selectedRecord.setPhotoFileName(newFileName);// 保存图片名到对应的item上inventoryController.updateInventoryPhoto(newFileName, selectedRecord.getInvId());} catch (IOException ioException) {logger.error("write photo to {} failed: {}", photoOutPath, ioException);throw new RuntimeException(ioException);}}

1. 首先需要在Tomcat的server.xml文件中配置图片的虚拟路径,由于我上传的图片是保存到D:/photo中的,所以将Tomcat的server.xml的配置设置成如下图:

2. 然后在修改完成后,由于我使用的是IDEA,所以我在本地上还需要在IDEA中修改Tomcat的图片访问路径,具体操作步骤如下:

3. 选择Edit Configuration -> Deployment -> 选择“+” 中的External Source ->选择D盘对应的photo文件夹(对应上图标签的docBase属性) -> 并修改Application context 中的内容(对应上图标签的path)-> Apply and OK(应用并确认)

4. 到这里,运行本地程序是可以直接查看到上传的图片的了

5. 但是在部署到服务器时,发现上传的图片无法直接显示出来,出现了404的错误

6. 这时候需要重启Tomcat服务后重新进入查看才可以看到上一次上传上去的图片

7. 后面经过了排查,发现了在Tomcat配置中的Context.xml文件中有这样的一个属性:

8. 总结

1. 在这里的antiResourceLocking属性设置为true 的话,就会将应用的docBase移到临时目录下,让Tomcat不会占用webapps下的文件,Tomcat里java.io.tmpdir默认指向Tomcat的temp目录。

2. 另外在这里如果还有一个属性antiJARLocking,则也会造成上传图片无法直接回显的问题,antiJARLocking -如果为true,当通过URL访问JAR中的资源时,Tomcat类加载器将采取额外措施来避免JAR文件锁定。这将影响应用程序的启动时间,但在可能发生文件锁定的平台或配置上可能会被证明是有用的.如果没有指定,默认值为false。

最后通过对服务器的Tomcat的配置文件Context.xml的antiResourceLocking属性进行了删除就可以解决上传图片无法直接回显的问题。(若配置文件里还有antiJARLocking属性,则将其一并进行删除)

解决在IDEA中部署Tomcat图片储存和虚拟访问路径 以及解决部署到服务器中上传图片后无法回显的404问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。