spring mvc文件上传小例子

1.jsp页面
<%@page contentType="text/html;charset=UTF-8"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<form action="mycenter/updatecenter" enctype="multipart/form-data" method="post">

<tr>
   <td class="r_left" id="businessfileSpan">上传证件的扫描件:</td>
   <td>
   <input type="file" name="businessfile" />
   <input type="hidden" name="business_file" value="${account.business_file}" /> <!-- 若为修改则将以的图片路径也带回给action以便删除或覆盖原有文件-->
   <c:if test="${account.business_file != ''}">
   <img src="${account.business_file}"  width="30" height="30" />
   </c:if>
   </td>
  </tr>
         <input type="submit" value="确定"   />
     </form>

2.action方法(spring mvc 全注解)

@RequestMapping(value = "updatecenter", method = RequestMethod.POST)
 public String updateUserCenter(MultipartHttpServletRequest request,
   Account account, Model model) { //注这里用的是MultipartHttpServletRequest
      // 获得上传证件的扫描件
  MultipartFile businessFile = request.getFile("businessfile");
  String flag = null;
  if (null != businessFile && 0 != businessFile.getSize()) {//判断是不是空
                       
/**
*saveCenterFile为上传文件自己写的个工具类,主要完成文件上传,并返回上传后的文件完整路径
*参数需要说明的是:(1)account.getBusiness_file(),为上次文件完整路径(修改文件时使用的)
*                  (2)account是新文件将要保存的文件夹拼接
*
**/
   flag = FileUtil.saveCenterFile(request.getSession()
     .getServletContext().getRealPath(""), businessFile,
     account.getBusiness_file(),"account");
   if (flag == "false") {
    model.addAttribute("resultmsg",
      "<font color='red'>修改失败,请上传jpg或gif格式的图片!</font>");
    return "mycenter/resource_user";
   } else {
    account.setBusiness_file(flag); //若上传成功,则将新文件完整路径保持在model中,以便持久话到数据库
   }
  }
      return "redirect:/mycenter/interaccount/resource_user?result=yes";
 }

3.上传工具类

package com.dsg.cccs.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

import javax.servlet.http.HttpSession;

import org.springframework.web.multipart.MultipartFile;

/**
 * @ClassName: FileUtil
 * @Description: TODO
 * @author proteus modoucc_gmail_com
 * @date 2011-8-5 下午5:10:31
 *
 */
public class FileUtil {

/**
  *
  * @method: saveFile
  * @author: Matty.Cong(Modoucc<AT>gmail.com)
  * @description: TODO
  * @date: 2012-9-16
  * @param fileRealPath
  *            文件实际保存目录
  * @param fileHttpPath
  *            文件HTTP访问目录
  * @param prefix
  *            文件保存的前缀
  * @param uploadFile
  * @return
  */
 public static String saveFile(HttpSession session, String prefix,
   MultipartFile uploadFile) {

String fileFolder = new SimpleDateFormat("yyyyMMdd").format(new Date());

/* 文件存储在容器中的实际路径 */
  String saveFilePath = session.getServletContext().getRealPath("/")
    + "/" + prefix + fileFolder + "/";

/* 构建文件目录 */
  File fileDir = new File(saveFilePath);
  if (!fileDir.exists()) {
   fileDir.mkdirs();
  }

/* 获取上传的文件名称 */
  String fileNameLong = uploadFile.getOriginalFilename();
  /* 获取文件扩展名 */
  String extensionName = fileNameLong.substring(fileNameLong
    .lastIndexOf(".") + 1);
  /* 重命名文件 */
  String filename = UUID.randomUUID().toString();
  try {
   FileOutputStream out = new FileOutputStream(saveFilePath + filename
     + "." + extensionName);
   out.write(uploadFile.getBytes()); // 写入文件
   out.close();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return prefix +fileFolder+"/"+ filename + "." + extensionName;
 }

public static String saveFile(String fileRealPath, MultipartFile uploadFile) {
  String baseDir = "/upload/account/";
  String fileFolder = new SimpleDateFormat("yyyyMMdd").format(new Date());
  /* 文件存储的相对路径 */
  String saveDirPath = baseDir + fileFolder + "/";
  /* 文件存储在容器中的绝对路径 */
  // String saveFilePath
  // =request.getSession().getServletContext().getRealPath(saveDirPath)+"/";
  String saveFilePath = fileRealPath + saveDirPath;
  System.out.println(saveFilePath);
  /* 构建文件目录以及目录文件 */
  File fileDir = new File(saveFilePath);
  if (!fileDir.exists()) {
   fileDir.mkdirs();
  }

/* 获取上传的文件名称 */
  String fileNameLong = uploadFile.getOriginalFilename();
  /* 获取文件扩展名 */
  String extensionName = fileNameLong.substring(fileNameLong
    .lastIndexOf(".") + 1);
  /* 重命名文件 */
  String filename = UUID.randomUUID().toString();
  try {
   FileOutputStream out = new FileOutputStream(saveFilePath + filename
     + "." + extensionName);
   out.write(uploadFile.getBytes()); // 写入文件
   out.close();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return saveDirPath + filename + "." + extensionName;
 }

public static String updateUserImage(String fileRealPath,
   MultipartFile uploadFile, String filename) {
  String baseDir = "/upload/portImages/";
  /* 文件存储的相对路径 */
  String saveDirPath = baseDir + "/";
  /* 文件存储在容器中的绝对路径 */
  String saveFilePath = fileRealPath + saveDirPath;
  System.out.println(saveFilePath);
  /* 构建文件目录以及目录文件 */
  File fileDir = new File(saveFilePath);
  if (!fileDir.exists()) {
   fileDir.mkdirs();
  }
  /* 获取上传的文件名称 */
  String fileNameLong = uploadFile.getOriginalFilename();

/* 获取文件扩展名 */
  String extensionName = fileNameLong.substring(fileNameLong
    .lastIndexOf(".") + 1);
  if (!extensionName.equals("jpg")) {
   if (!extensionName.equals("gif")) {
    return "false";
   }
  }
  try {
   FileOutputStream out = new FileOutputStream(saveFilePath + filename
     + "." + extensionName);
   out.write(uploadFile.getBytes()); // 写入文件
   out.close();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return filename + "." + extensionName;
 }

/**
  * 个人中心上传注册附件,友情连接上传附件 若是修改,则将以前的文件删除
  *
  * @param fileRealPath
  * @param uploadFile
  * @param oldImageUrl
  * @param fileurl
  * @return
  */
 public static String saveCenterFile(String fileRealPath,
   MultipartFile uploadFile, String oldImageUrl, String fileurl) {

String flag = "";
  try {
   if (null != oldImageUrl && oldImageUrl.length() > 5) {// 这里大于5只是为了防止“”
    File fileDir = new File(fileRealPath + oldImageUrl);
    if (fileDir.exists()) {
     fileDir.delete();
    }
   }
   // 文件存储的相对路径
   String saveDirPath = "/upload/" + fileurl + "/"
     + new SimpleDateFormat("yyyyMMdd").format(new Date()) + "/";
   String saveFilePath = fileRealPath + saveDirPath;
   // 构建文件目录以及目录文件
   File fileDir = new File(saveFilePath);
   if (!fileDir.exists()) {
    fileDir.mkdirs();
   }
   // 获取上传的文件名称
   String fileNameLong = uploadFile.getOriginalFilename();
   // 获取文件扩展名
   String extensionName = fileNameLong.substring(fileNameLong
     .lastIndexOf(".") + 1);
   if (!extensionName.equals("jpg")) {
    if (!extensionName.equals("gif")) {
     return "false";
    }
   }
   // 重命名文件
   String filename = UUID.randomUUID().toString();
   FileOutputStream out = new FileOutputStream(saveFilePath + filename
     + "." + extensionName);
   out.write(uploadFile.getBytes()); // 写入文件
   out.close();
   flag = saveDirPath + filename + "." + extensionName;

} catch (Exception e) {
   e.printStackTrace();
  }
  return flag;
 }}

转载于:https://blog.51cto.com/3131854/999475

spring mvc文件上传小例子相关推荐

  1. Spring MVC文件上传示例教程 - 单个和多个文件

    Spring MVC文件上传示例教程 - 单个和多个文件 文件上传是任何Web应用程序中非常常见的任务.我们之前已经看过如何在Servlet和Struts2文件上传中上传文件.今天我们将学习Sprin ...

  2. Spring MVC文件上传

    1.配置xml文件 1 <!-- 指定文件上传解析 名字不能乱给 --> 2 <bean name="multipartResolver" class=" ...

  3. 【Spring】Spring MVC文件上传--整合bootstrap-fileinput和jQuery-File-Upload

    前言 这里分享两个使用Spring MVC进行文件上传的简单示例, 分别整合bootstrap-fileinput 和 Jquery File Upload , 代码十分简单, 都是入门的示例,因此这 ...

  4. Springmvc,Spring MVC文件上传

    Springmvc文件上传: 1.代码截图如下: 2.UploadController.java: package cn.csdn.controller;import java.io.File;imp ...

  5. Spring MVC 文件上传 文件下载

    索引: 目录索引 参看代码 GitHub: pom.xml WebConfig.java index.jsp upload.jsp FileUploadController.java Files_Ut ...

  6. spring mvc文件上传与下载

    基于spring mvc注解: (1)导入jar包:ant.jar.commons-fileupload.jar.connom-io.jar. (2)在spring-mvc.xml中的配置 <! ...

  7. Spring MVC文件上传下载实例

    工程目录: 导入jar: controllers.FileControler.java package controllers;import java.io.File; import java.io. ...

  8. Spring mvc 文件上传

    1.文件上传的必要前提 A.form 表单的 enctype 取值必须是:multipart/form-data (默认值是:application/x-www-form-urlencoded) en ...

  9. spring mvc 文件上传 form表单

    jsp页面 <form class="form-horizontal" role="form" id="form" enctype=& ...

最新文章

  1. centos下pg_dump的服务器版本不匹配问题
  2. Practice:Office2010中OneNote与outlook的协同工作
  3. 鼠标在计算机上被关闭了怎么处理,鼠标驱动程序丢失导致系统自动关闭的解决方法...
  4. 【转载】Windows自带.NET Framework版本大全
  5. SQL Server XML数据解析(1)
  6. C++中两种计算时间方法的比较
  7. 安装谷歌浏览器特定版本后禁止自动更新
  8. idea-svn文件名字浅蓝色(蓝绿色)含义
  9. C语言男性标准体重,2019男人标准体重表!
  10. 如何让他喜欢你?让他多看一眼
  11. plc与计算机怎么网络连接 图,PLC与输入/输出设备的连接图解
  12. linux14.04设置DNS,Ubuntu 16.04修改配置静态IP和DNS
  13. 测试pok_如何将PokémonGo App用于Apple Watch
  14. TSFS终端存储文件系统边缘计算技术构架
  15. 共享yum资源库下一键安装虚拟机的脚本3【完全自动化】
  16. 基于Ubuntu系统,调用opencv在图片上显示数字和汉字
  17. Base—3.0 SPI
  18. 翻译,怎样将图片文字翻译成英文
  19. 南加州大学计算机专业研究生录取,南加州大学计算机科学(数据科学)理学硕士研究生申请要求及申请材料要求清单...
  20. thinkPHP的帮助

热门文章

  1. ITSM实施三招[案例]
  2. 01-HTML基础与进阶-day6-录像281
  3. 对象----《你不知道的JS》
  4. 2018-2019-1 20165310 20165315 20165226 实验一 开发环境的熟悉
  5. The Minimum Cycle Mean in a Digraph 《有向图中的最小平均权值回路》 Karp
  6. 大小端以及字节序的问题
  7. 用MyEclipse开发Spring入门
  8. C examples
  9. react hooks使用_如何使用Hooks将React类组件转换为功能组件
  10. 在JavaScript中重复字符串的三种方法