上传文件我一直都觉得很难,好吧,所有涉及文件操作的我都觉得不容易。然后今天尝试了从网页上传图片保存到服务器。这个例子的前提是搭建好了服务器端框架:Maven+Spring MVC+MyBatis。当然必要的准备我也要提及。

  首先是jar包,上传文件必不可少的jar包:commons-fileupload和commons-io。这两个是apache的开源jar包。

  Maven配置:

<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>

Maven配置

  有了这两个jar包基本上就行了。

  

  还有一个准备工作是对SpringMVC上传文件的配置:

<!-- 对上传文件的配置 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<value>32505856</value><!-- 上传文件大小限制为31M,31*1024*1024 -->
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>

Show Code

  

  接下来是上传文件的jsp页面,当然一般的html页面也是可以的。特别要注意的是,form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。否则会上传不了,会报错的。

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="appuser/uploadHeadPhoto.do"
method="POST" enctype="multipart/form-data" >
<input type="file" name="headPhotoFile">
<input type="text" name="userId" value="1" readonly>
<button type="submit" value="提交">提交</button>
</form>
</body>
</html>

index.jsp

  

  后台Controller处理文件上传的接口,主要过程是获取文件二进制流,然后写入新创建的jpg,返回新创建的jpg的地址,将地址写入数据库。数据库里面最终存放的jpg图片路径是D:\Program Files\apache-tomcat-7.0.62\webapps\springmvcImage\14386803406181764242780.jpg。

 @RequestMapping("/uploadHeadPhoto")
public String uploadHeadPhoto(@RequestParam MultipartFile headPhotoFile, HttpServletRequest request) throws IOException{
String userId = request.getParameter("userId"); if(headPhotoFile.isEmpty()){
System.out.println("文件未上传");
}else{
String contentType = headPhotoFile.getContentType();
System.out.println(contentType);//输出image/jpeg
if(contentType.startsWith("image")){
//获取Web项目的全路径
String realPath = request.getSession().getServletContext().getRealPath("/");
System.out.println(realPath);//输出D:\Program Files\apache-tomcat-7.0.62\webapps\springmvc\
realPath = realPath.replace("springmvc", "springmvcImage");
realPath.concat("user");
String newFileName = new Date().getTime()+""+new Random().nextInt()+".jpg";
FileUtils.copyInputStreamToFile(headPhotoFile.getInputStream(), new File(realPath, newFileName)); //将图片路径插入数据库
Map<String, Object> requestMap = new HashMap<String, Object>();
requestMap.put("userId", userId);
requestMap.put("headPhoto", realPath+newFileName);
int flag = userService.uploadHeadPhoto(requestMap);
if(flag!=0&&flag!=-1){
System.out.println("success");
return "success";
}
}
} return null;
}

  

Maven+SpringMVC+MyBatis 上传图片的更多相关文章

  1. 使用intellij idea搭建MAVEN+springmvc+mybatis框架

    原文:使用intellij idea搭建MAVEN+springmvc+mybatis框架 1.首先使用idea创建一个maven项目 2.接着配置pom.xml,以下为我的配置 <projec ...

  2. Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)

    Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomc ...

  3. maven+springMVC+mybatis+sqlserver数据

    因为之前搭好的是maven+springMVC+mybatis+mysql数据库环境,但是在实际工作项目是使用的sqlserver数据库,本文是针对数据库从mysql切换到sqlserver数据库 s ...

  4. Maven + SpringMVC + Mybatis

    使用IDEA配置Maven + SpringMVC + Mybatis [一步一步踩坑详细配置完成] PS:初学,想使用Maven配置一个SpringMVC的开发环境,照着网上的各种图文解说,配置了好 ...

  5. maven+springMVC+mybatis+junit详细搭建过程 ***

    springMVC+mybatis框架搭建 在上一遍博客中以及讲诉了新建maven项目的流程,现在紧跟上一遍文章,接着搭建spring项目 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什 ...

  6. IntelliJ IDEA下Maven SpringMVC+Mybatis入门搭建例子

    很久之前写了一篇SSH搭建例子,由于工作原因已经转到SpringMVC+Mybatis,就以之前SSH实现简单登陆的例子,总结看看SpringMVC+Mybatis怎么实现. Spring一开始是轻量 ...

  7. 原:maven+springMVC+mybatis+junit详细搭建过程

    阅读目录 1.  工程目录结构整理清楚 2.  引入依赖包 3. 配置数据库连接属性 4.  配置spring配置文件 5.  java代码编写(model,dao,service层代码) 6.  m ...

  8. 通过IntelliJ IDEA创建maven+springmvc+mybatis项目

    第一个springmvc+mybatis项目,通过学习极客学院视频(视频案例通过eclipse搭建,网址为http://www.jikexueyuan.com/course/1430.html),发现 ...

  9. maven+springMVC+mybatis+mysql详细过程

    1.工程目录 a.在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean), cn.springmvc.dao(存放spring与mybatis连接接口 ...

随机推荐

  1. delphi 线程池基础 TSimplePool

    1. TSimpleThread 2. TSimpleList 3. 以1,2构成 TSimplePool 用法 先定义: TDoSomeThingThread=class(TSimpleThread ...

  2. Android 学习之 开源项目PullToRefresh的使用

    首先 下载 Android-PullToRefresh-master 下载地址  https://github.com/chrisbanes/Android-PullToRefresh 下载之后将其解 ...

  3. Day1_PHP快速入门

    本人知识背景:行业软件C/C++开发两年经验,了解PHP, 所以学习日志偏向记录PHP相对于C的特性 测试环境:EasyPHP13.1 Day 1 学习时间:3小时 1. HTML触发PHP HTML ...

  4. ubuntu15.04下编译 libvirt

    很久没有编译 libvirt了. 工作需要,重新编译. [org_ref]: http://libvirt.org/compiling.html 很简单. 编译过程, 还是很多问题. 依赖包(给懒人参 ...

  5. IOS深入学习(3)之Control Object

    1 前言 今天我们来简单的学习一下IOS中用户点击屏幕后的事件处理,其中主要介绍一下Control Object,内容如下. 2 详述 Control是处于当用户用某种方式操作进行发送消息给另一个界面 ...

  6. 面向对象程序设计-C++_课时16子类父类关系

    初始化列表 类名::类名(形参1,形参2,...形参n):数据成员1(形参1),数据成员2(形参2),...,数据成员n(形参n) { ... } 规则1,初始化列表进行数据成员的初始化 规则2,初始 ...

  7. nodejs在服务器上运行

     nodejs运行之后,关掉链接,网站运行就会断开,需要安装forever,后台执行. 安装方法如下(在windows和Linux下都能运行)://forever的安装: npm install fo ...

  8. Httpservlet cannot be resolved to a type

    这个问题与上个问题可以说是“错的类似”.解决方案:就是在Tomcat的lib目录下加入servlet-api.jar 即可.

  9. 最小生成树Jungle Roads

    这道题一定要注意录入方式,我用的解法是prime算法 因为单个字符的录入会涉及到缓冲区遗留的空格问题,我原本是采用c语言的输入方法录入数据的,结果对了,但是提交却一直wrong,后来改成了c++的ci ...

  10. (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)

    We have already seen how to make jQuery react to the loading of a web page. The $(document).ready()e ...