spring mvc文件上传小例子
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文件上传小例子相关推荐
- Spring MVC文件上传示例教程 - 单个和多个文件
Spring MVC文件上传示例教程 - 单个和多个文件 文件上传是任何Web应用程序中非常常见的任务.我们之前已经看过如何在Servlet和Struts2文件上传中上传文件.今天我们将学习Sprin ...
- Spring MVC文件上传
1.配置xml文件 1 <!-- 指定文件上传解析 名字不能乱给 --> 2 <bean name="multipartResolver" class=" ...
- 【Spring】Spring MVC文件上传--整合bootstrap-fileinput和jQuery-File-Upload
前言 这里分享两个使用Spring MVC进行文件上传的简单示例, 分别整合bootstrap-fileinput 和 Jquery File Upload , 代码十分简单, 都是入门的示例,因此这 ...
- Springmvc,Spring MVC文件上传
Springmvc文件上传: 1.代码截图如下: 2.UploadController.java: package cn.csdn.controller;import java.io.File;imp ...
- Spring MVC 文件上传 文件下载
索引: 目录索引 参看代码 GitHub: pom.xml WebConfig.java index.jsp upload.jsp FileUploadController.java Files_Ut ...
- spring mvc文件上传与下载
基于spring mvc注解: (1)导入jar包:ant.jar.commons-fileupload.jar.connom-io.jar. (2)在spring-mvc.xml中的配置 <! ...
- Spring MVC文件上传下载实例
工程目录: 导入jar: controllers.FileControler.java package controllers;import java.io.File; import java.io. ...
- Spring mvc 文件上传
1.文件上传的必要前提 A.form 表单的 enctype 取值必须是:multipart/form-data (默认值是:application/x-www-form-urlencoded) en ...
- spring mvc 文件上传 form表单
jsp页面 <form class="form-horizontal" role="form" id="form" enctype=& ...
最新文章
- centos下pg_dump的服务器版本不匹配问题
- Practice:Office2010中OneNote与outlook的协同工作
- 鼠标在计算机上被关闭了怎么处理,鼠标驱动程序丢失导致系统自动关闭的解决方法...
- 【转载】Windows自带.NET Framework版本大全
- SQL Server XML数据解析(1)
- C++中两种计算时间方法的比较
- 安装谷歌浏览器特定版本后禁止自动更新
- idea-svn文件名字浅蓝色(蓝绿色)含义
- C语言男性标准体重,2019男人标准体重表!
- 如何让他喜欢你?让他多看一眼
- plc与计算机怎么网络连接 图,PLC与输入/输出设备的连接图解
- linux14.04设置DNS,Ubuntu 16.04修改配置静态IP和DNS
- 测试pok_如何将PokémonGo App用于Apple Watch
- TSFS终端存储文件系统边缘计算技术构架
- 共享yum资源库下一键安装虚拟机的脚本3【完全自动化】
- 基于Ubuntu系统,调用opencv在图片上显示数字和汉字
- Base—3.0 SPI
- 翻译,怎样将图片文字翻译成英文
- 南加州大学计算机专业研究生录取,南加州大学计算机科学(数据科学)理学硕士研究生申请要求及申请材料要求清单...
- thinkPHP的帮助