上传文件后很多种保存方式,其中一种就是将上传的文件保存在某个磁盘的文件夹中
这样子既不会给tomcat造成压力也不会给数据库造成压力
但是有一个问题就是web项目读取的问题。所以可以通过配置tomcat虚拟路径来读取。
添加配置访问
假如把上传文件放到 E:\source\attachments这个文件夹中
1、打开 tomcat/conf/server.xml 配置文件,在之间加入下面代码:
Debug: 则是设定debug level, 0表示提供最少的信息,9表示提供最多的信息
docBase:表示自己本地磁盘绝对路径
path:表示自己指定一个jsp访问的路径
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路径 + 文件相对路径 即可:
image/word.jpg 可以是数据库存放的文件相对路径。