Tomcat访问本地磁盘文件

上传文件后很多种保存方式,其中一种就是将上传的文件保存在某个磁盘的文件夹中

这样子既不会给tomcat造成压力也不会给数据库造成压力

但是有一个问题就是web项目读取的问题。所以可以通过配置tomcat虚拟路径来读取。

添加虚拟路径配置访问

假如把上传文件放到  E:\source\attachments 这个文件夹中

1、打开 tomcat/conf/server.xml 配置文件,在<host></host>之间加入下面代码:

<Context crossContext="true" debug="0" docBase="E:\source\attachments\" path="/Esource" reloadable="true"/>

       Debug: 则是设定debug level,  0表示提供最少的信息,9表示提供最多的信息

       docBase:表示自己本地磁盘绝对路径

       path:表示自己指定一个jsp访问的路径

关于 context 配置属性详见官网: http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

crossContext

true如果希望此应用程序中的调用ServletContext.getContext()成功返回在此虚拟主机上运行的其他Web应用程序的请求调度程序,则设置为。false在安全意识环境中设置为(默认值),以便getContext()始终返回null

docBase

此Web应用程序的文档库(也称为上下文根)目录,或Web应用程序归档文件的路径名(如果此Web应用程序直接从WAR文件执行)。您可以为此目录或WAR文件指定绝对路径名,或者指定appBase与拥有主机的目录相关的路径名。

除非在server.xml中定义了Context元素或者docBase不在Host的下面,否则不能设置此字段的值appBase

如果符号链接用于docBase,则对符号链接的更改仅在Tomcat重新启动或取消部署和重新部署上下文后才有效。上下文重新加载是不够的

path

此Web应用程序的上下文路径,与每个请求URI的开头匹配,以选择适当的Web应用程序进行处理。特定主机中的所有上下文路径必须是唯一的。如果指定空字符串(“”)的上下文路径,则表示您正在为此主机定义默认 Web应用程序,该应用程序将处理未分配给其他上下文的所有请求。

只有在server.xml中静态定义Context时,才能使用此属性。在所有其他情况下,将从用于.xml上下文文件或docBase的文件名推断出该路径。

即使在server.xml中静态定义Context,也不能设置此属性,除非docBase不在 Host的下面appBase或两者都是, deployOnStartup并且autoDeploy为false。如果未遵循此规则,则可能会导致双重部署。

reloadable

设置为true如果您希望Catalina监视更改类 /WEB-INF/classes//WEB-INF/lib更改,并在检测到更改时自动重新加载Web应用程序。此功能在应用程序开发期间非常有用,但它需要大量的运行时开销,不建议在部署的生产应用程序上使用。这就是为什么此属性的默认设置为false。但是,您可以使用Manager Web应用程序按需触发已部署应用程序的重新加载。

2、当 jsp 页面要访问时,使用 path路径 + 文件相对路径 即可:

<img src="/Esource/image/word.jpg" alt="文件无法加载" style="width: 100%; height: 110px;">

   image/word.jpg  可以是数据库存放的文件相对路径。

 

更多配置参考文件:https://www.cnblogs.com/jingyunyb/p/3647945.html

    原文作者:Charge8
    原文地址: https://blog.csdn.net/qq_42402854/article/details/86591217
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞