springmvc上传图片到Tomcat虚拟目录
一、简介
通过把文件上传到tomcat的虚拟目录,实现代码和资源文件分开。
二、环境
spring+springmvc+mybatis
三、代码实现
1.导入文件上传的jar
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency> <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
2.在springmvc.xml中配置multipart类型解析器
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!-- 指定所上传文件的总大小不能超过60000K。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="600000000"/>
<property name="maxInMemorySize" value="600000000"/>
</bean>
3.在tomcat下创建虚拟目录
- 在tomcat的根目录下创建一个名为FileDir的目录(当然这个目录也可以建立在其它的地方)

- 在tomcat的conf/server.xml,配置虚拟目录。增加下面这行
<Context path="/FileDir" docBase="D:\tomcats\Tomcat7-8080-idea\FileDir"/>

- 添加一张图片1.jpg到虚拟目录中,并启动tomcat测试。访问:http://localhost:8080/FileDir/1.jpg。可以请求到图片,说明配置成功。
4.springmvc上传图片到虚拟目录
- jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>测试页</title>
</head>
<body>
<h2>测试文件上传</h2>
<form action="upload" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="realname"><br>
头像:<input type="file" name="picFile"><br>
<input type="submit" value="上传">
</form>
<c:if test="${pic != null}">
<img src="/FileDir/${pic}" >
</c:if>
</body>
</html>
- controller
@RequestMapping(value = "/upload",method = {RequestMethod.POST})
    public String upload(MultipartFile picFile,String realname,Model model) throws Exception{
        if(!picFile.isEmpty()){
            System.out.println("realname:"+realname);
            //存储图片的路径
            String filePath = "D:\\tomcats\\Tomcat7-8080-idea\\FileDir\\";
            String originalFilename = picFile.getOriginalFilename();
            //获取文件后缀名称
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            //新图片名称
            String fileName = UUID.randomUUID().toString()+suffix;
            //上传图片
            File newFile = new File(filePath+fileName);
            picFile.transferTo(newFile);
            //返回页面
            model.addAttribute("pic",fileName);
        }
        return "test";
    }
springmvc上传图片到Tomcat虚拟目录的更多相关文章
- Tomcat 虚拟目录映射
		最近老是被一个旧Ant工程所困扰,代码版本都改好了测试也通过了,就是打不了war包,一看build.xml 我的天 各种逆天啊....头大.于是乎想起了最基础的tomcat虚拟目录虽是一个很基础的点, ... 
- 分布式环境Tomcat多节点集群下共享目录配置,tomcat虚拟目录+nfs
		我们可能有这种场景: 集群环境下,多个web容器需要请求一个共享目录下的文件,比如保存图片或者录音文件,任意一个节点保存后其他节点需要及时获取,此时就需要目录进行同步了,否则Nginx负载到任意一个节 ... 
- 关于使用ssm与spring时,配置tomcat 虚拟目录( doBase )中的一些坑
		一.使用SSM需要 配置虚拟目录时 tomcat的配置 在tomcat server.xml的<HOST></HOST>中加入以下内容 在配置完成之后,当我们访问URL 为 ... 
- Tomcat虚拟目录配置方法及原理
		tomcat 安装好之后,只需要把你的程序包放到$Tomcat_Home$/webapps下就可以直接使用了.这样会使webapps越来越大就需要设置虚拟目录: 1.单个应用设置: 在<Host ... 
- Intellij Idea 2016 配置Tomcat虚拟目录
		默认的idea是不需要配置虚拟目录了,它完全托管项目,但是有些时候,在开发过程中,是需要以虚拟目录的形式开发,即以:http://localhost:8080/虚拟目录名/index.html 这种形 ... 
- java web(三) Tomcat虚拟目录映射方式
		Tomact服务器虚拟目录的映射方式 web应用开发好后若想被外界访问,需要将web应用所在的目录交给web服务器管理,这个过程称为虚拟目录的映射. 方式一:在server.xml文件的host元素中 ... 
- Tomcat虚拟目录的设置
		在学习JSP/Servlet的过程中,配置Tomcat的虚拟目录可能是我们遇到的第一个比较麻烦的问题,说是麻烦是针对我们初学者而言,对于高手那都不是问题.反正我是弄了一天才配置好,发现网上给出的很多配 ... 
- tomcat 虚拟目录与显示目录中文件列表
		虚拟目录: 该方法推荐使用,比较简单. 在%tomcat%\conf\Catalina\localhost(该目录可能需要手工创建)下新建一个文件abc.xml,注意文件名中的abc就表示虚拟目录的名 ... 
- tomcat虚拟目录配置
		Tomcat6.0虚拟目录配置[转] 设虚拟目录 "site",通过 http://localhost:8080/site 访问物理路径 D:"site 文件夹里面的内容 ... 
随机推荐
- Jenkins参数化构建(七)
			一.配置参数化构建过程 主要用来区分分支,使用传参的方式,将分支名称传入脚本中进行拉取代码. 1.1 最常用的是:字符参数.文本参数. 1.2 添加字符参数和文本参数,并配置变量名称 1.3 配置 ... 
- JPA-save()方法会将字段更新为null的解决方法
			今天在开发上碰到一个问题,在做页面展示的时候传给前端十个字段,前端修改了其中3个的值,所以只传了3个值给后端,其余字段默认为null,更新后其他7个字段在全部变为了空值. 在前端没法全量回传所有属性的 ... 
- 抓包工具:tcpdump抓包命令详解
			抓包工具:tcpdump抓包命令详解 简介: tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以 ... 
- ssh密钥批量分发
			#################以下所有的命令脚本都是在centos7系统上实现,centos6略有不同 客户端使用公钥连接服务器的步骤: 提起ssh我们就能想到的是远程连接,平时我们都是通过密码来 ... 
- Python进阶-V 迭代器(Iterator)、生成器(Generator)函数
			一.迭代器 1.可循环的有哪些,即可用for语句或者while语句的数据类型有哪些? 字符串(str).列表(list).元组(tuple).字典(dic).集合(set).枚举类(enumerate ... 
- openlayers上添加点击事件
			有很多场景会有这个需求,就是我绘制了图标,点击图标需要展示一些对应的信息 openlayer的事件主要是通过监听来完成的,你所有的icon的点击事件都是可以通过监听map的点击事件来处理对应的逻辑的 ... 
- isinstance 与 issubclass
			isinstance与issubclass都是用于判断的,有什么区别呢? 1. isinstance字面意思:实列, 用户判断对象所属类型,包含类的继承关系. 2. issubclass字面理解:是子 ... 
- Linux性能优化实战学习笔记:第三十二讲
			一.上节总结 专栏更新至今,四大基础模块的第三个模块——文件系统和磁盘 I/O 篇,我们就已经学完了.很开心你还没有掉队,仍然在积极学习思考和实践操作,并且热情地留言与讨论. 今天是性能优化的第四期. ... 
- [LeetCode] 893. Groups of Special-Equivalent Strings 特殊字符串的群组
			You are given an array A of strings. Two strings S and T are special-equivalent if after any number ... 
- mysql增加字段,修改字段,增加索引等语句
			mysql语句: 1.修改表名: rename table 旧表名 to 新表名; 2.修改字段类型: alter table 表名 modify column 字段名 字段类型(长度) 3.修改字段 ... 
