SpringMVC使用FileUpload进行文件上传

导入FileUpload和common-io的Jar包

注意:1、Struts2需要使用其他方法:struts2过滤时,会改变reqeust的类型,由HttpServletRequest变成MultiPartRequestWrapper

1、Test.jsp:

<form action="<%=basePath%>self/testFileUpload.do" method="post" enctype="multipart/form-data">
    	<input type="text" name="num">
    	<input name="img1" type="file" accept="image/gif,image/jpg,image/png,image/jpeg"/>
    	<input name="img2" type="file" accept="image/gif,image/jpg,image/png,image/jpeg"/>
    	<input type="submit" name="test">
    	<input type="reset" name="test1">
    </form>

2、controller:

@RequestMapping(value="/testFileUpload")
	public void  testFileUpload(HttpServletRequest request,HttpServletResponse response) throws Exception{
		String num = "";
		String img1 = "";
		String img2 = "";
		String fileName = "";
		try {
			String t = request.getCharacterEncoding();
			boolean isMultipart = ServletFileUpload.isMultipartContent(request);//判断是否是表单文件类型
			if(isMultipart){
				DiskFileItemFactory factory = new DiskFileItemFactory();
				ServletFileUpload upload = new ServletFileUpload(factory);
				upload.setHeaderEncoding(request.getCharacterEncoding());//这里很重要啊 解决linux环境下上传文件名乱码的问题
				//upload.setFileSizeMax(3*1024*1024);//3M
				List items = upload.parseRequest(request);
				if(items.size() == 0){
					System.out.println("无数据");
				}
				Iterator<Object> formItem = items.iterator();
				while(formItem.hasNext()){
					FileItem item = (FileItem) formItem.next();
					//如果是表单元素
					if(item.isFormField()){
						if (item.getFieldName().equals("num")) {
							num = item.getString(request.getCharacterEncoding()).trim();
						}
					}
					//如果不是表单元素
					if(!item.isFormField()){
						String name = item.getName();
						String type = item.getContentType();
						long sizeInBytes = item.getSize();

						try {
							String fullName = item.getName().trim();
							if(fullName != ""){
								fileName = System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
								if(item.getFieldName().equals("img1")){
									fileName = "img1-" + System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
								}
								if(item.getFieldName().equals("img2")){
									fileName = "img2-" + System.currentTimeMillis() + fullName.substring(fullName.indexOf("."));
								}
								String tomcatRoot = FileOperator.getRootPath();
								String path = tomcatRoot;
								if(FileOperator.FileUploadEx(path, fileName, item.getSize(), item.getInputStream())){
									if(item.getFieldName().equals("img1")){
										System.out.println("testimg1");
									}
									if(item.getFieldName().equals("img2")){
										System.out.println("testimg2");
									}
								}
							}

						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				}
			}else{
				System.out.println("非multipart/form-data提交方式");
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
时间: 2024-10-14 06:49:01

SpringMVC使用FileUpload进行文件上传的相关文章

SpringMVC(6)文件上传

SpringMVC(6)文件上传 我们做一个上传图片的例子,页面(fileUpload.jsp)功能如下: 上传成功后即时显示上传的图片. upload.jsp: <body> <h3>文件上传</h3> <form action="/testAnnotationMVC_fileUpload/file/fileUpload2.jspx" method="post" enctype="multipart/form-d

Spring MVC使用commons fileupload实现文件上传功能

通过Maven建立Spring MVC项目,引入了Spring相关jar依赖. 1.为了使用commons fileupload组件,需要在pom.xml中添加依赖: <properties> <spring.version>3.0.7.RELEASE </spring.version> <junit.version>3.8.1</junit.version> <fileupload.version>1.2.2</fileupl

SpringMVC中的多文件上传

这是用的是SpringMVC-3.1.1.commons-fileupload-1.2.2和io-2.0.1 首先是web.xml <?xml version="1.0" encoding="UTF-8"?>   <web-app version="2.5"        xmlns="http://java.sun.com/xml/ns/javaee"        xmlns:xsi="http

使用fileupload实现文件上传(1)

一. fileupload组件工作原理 先来张图片, 帮助大家理解 fileupload核心API 1. DiskFileItemFactory构造器1) DiskFileItemFactory() // 使用默认配置2) DiskFileItemFactory(int sizeThreshold, File repository) sizeThreshold 内存缓冲区, 不能设置太大, 否则会导致JVM崩溃 repository 临时文件目录 2. ServletFileUpload1) i

SpringMVC注解方式与文件上传

目录: springmvc的注解方式 文件上传(上传图片,并显示) 一.注解 在类前面加上@Controller 表示该类是一个控制器在方法handleRequest 前面加上 @RequestMapping("/index") 表示路径/index会映射到该方法上 将上一篇的博客改为注解方式: SpringMVC的基础配置及视图定位 1.修改springmvc-servlet.xml 去掉映射相关的配置,因为已经使用注解方式了增加 <context:component-scan

SpringMVC 学习笔记(八)文件上传

Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的.Spring 用Jakarta Commons FileUpload 技术实现了一个MultipartResolver 实现类:CommonsMultipartResovler Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring的文件上传功能,需现在上下文中配置 MultipartRes

SpringMVC:学习笔记(8)——文件上传

SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. 客户端编程 1.为了上传文件,必须将HTML表格的enctype属性值设为multipart/form-data,像下面这样: <form action="action" enctype="multipart/form-data" method="po

我爱Java系列---【SpringMVC传统方式的文件上传和前端获取数据库图片在页面显示】

一.文件上传 说明:传统方式的文件上传,指的是我们上传的文件和访问的应用存在于同一台服务器上.并且上传完成之后,浏览器可能跳转. 1. 第一步:创建 maven 工程并导入 commons-fileupload 坐标 1 <dependency> 2 <groupId>commons-fileupload</groupId> 3 <artifactId>commons-fileupload</artifactId> 4 <version&g

SpringMVC——拦截器及文件上传和下载

目录 自定义拦截器 拦截器类 在springmvc的配置文件中配置拦截器 文件上传 导入jar包 配置bean:multipartResolver 采用file.Transto 来保存上传的文件 文件下载 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.开发者可以自己定义一些拦截器来实现特定的功能. 过滤器与拦截器的区别:拦截器是AOP思想的具体应用. 过滤器: servlet规范中的一部分,任何java web工程都可以使用 在u