首先我的html表单页面是这样的
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link href="../index2Files/css/Home.css" rel="stylesheet" type="text/css"> <title>addDocument</title> </head> <body> <div style='overflow:hidden;margin-left:10px;padding-top:10px'> <form action="/exam/upload" method="post" enctype="multipart/form-data" id="uploadFile" target="test"> <input id="filepath" type="text" length="30" class="input-bg" readonly="readonly" style="font-size:20px;color:#00d2ff"/> <input type="file" name="file" class="file1" id="file" style="display:none;" size="28" onchange="getuploadFile()" /> <input id="scan" type="button" class="zhixing-bt" value="浏览" onclick="file1()"/> <input id="import" type="submit" class="zhixing-bt" value="导入"/> </form> </div> <iframe name="test"></iframe> <script type="text/javascript" src="../js/jquery.js"></script> <script type="text/javascript" src="../js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="../js/jquery.form.js"></script> </body> </html>
里面的js函数可以先不用管它,不涉及到文件提交然后是后台接收
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import main.java.bean.ExamQuestion; import main.java.service.ExamService; import main.java.util.BeanUtil; import main.java.util.Util; import net.sf.json.JSONObject; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; @Controller @RequestMapping(value="/exam") public class ExamController { private ExamService examService = (ExamService) BeanUtil.getBeanByName("examService"); @RequestMapping(value="/upload" , method = RequestMethod.POST) @ResponseBody public JSONObject upload(@RequestParam("file")MultipartFile[] files , HttpServletRequest request, HttpServletResponse response){ File orgFile = null ; for(MultipartFile myfile : files){ if(myfile.isEmpty()){ System.out.println("文件未上传"); }else{ System.out.println("文件长度: " + myfile.getSize()); System.out.println("文件类型: " + myfile.getContentType()); System.out.println("文件名称: " + myfile.getName()); System.out.println("文件原名: " + myfile.getOriginalFilename()); System.out.println("========================================"); //如果用的是Tomcat服务器,则文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\WEB-INF\\upload\\文件夹中 String realPath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload"); //这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉,我是看它的源码才知道的 InputStream in = null ; FileOutputStream out = null ; try{ in = myfile.getInputStream(); byte[] buffer = new byte[1024] ; int length = 0 ; File filedir = new File(realPath); if(!filedir.exists()){ filedir.mkdirs(); } orgFile = new File(realPath+"\\"+myfile.getOriginalFilename()) ; out = new FileOutputStream(orgFile); while((length = in.read(buffer)) != -1){ out.write(buffer, 0, length); } out.flush(); } catch(Exception e ){ e.printStackTrace(); } finally{ if(in!= null ){ try { in.close() ; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(out!= null ){ try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } JSONObject result = new JSONObject(); result.put("success", "false") ; List<ExamQuestion> questionList = new ArrayList<ExamQuestion>(); if( orgFile != null && orgFile.exists()){} if(questionList != null && questionList.size() > 0 ){ examService.addQuestionBatch(questionList); result.put("success", "true") ; } return result ; } }
在这基础上,springmvc的配置需要添加如下信息
</bean> <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="2000000"/> </bean> <!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException --> <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到/WEB-INF/jsp/error_fileupload.jsp页面 --> <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop> </props> </property> </bean>
相关推荐
表单需设置`enctype="multipart/form-data"`,以便支持多部分数据传输。 5. **文件下载**: 下载文件时,Controller中需要返回一个链接,该链接指向服务器上待下载的文件。可以使用`@ResponseBody`和`...
总结来说,实现"springMVC测试上传文件并在页面上显示"的功能,需要处理前端的文件选择与提交,后端的文件接收、存储和解析,以及前端的数据展示。涉及的技术包括HTML5表单、Spring MVC的`@RequestParam`、`...
在提交时,表单会将文件内容作为多部分数据发送。 4. **控制器处理**: 在SpringMVC的控制器类中,我们需要定义一个处理文件上传的HTTP请求的方法。该方法通常接收`@RequestParam("filename") ...
在本教程"SpringMVC-11 文件上传"中,我们将深入探讨如何使用Spring MVC来实现这一功能,特别是借助Apache Commons库中的`CommonsMultipartResolver`组件。 **一、MultipartResolver的角色** 在Spring MVC中,`...
实现错误处理机制,如上传文件过大或类型不符时,返回适当的错误信息。 7. **前端表单**: 使用HTML的`<form>`标签,设置`enctype="multipart/form-data"`属性以支持文件上传。通过`<input type="file">`创建文件...
在文件管理系统中,SpringMVC负责处理HTTP请求,将前端提交的数据与后端业务逻辑进行对接。开发者可以通过注解驱动的方式定义控制器,处理文件的增删改查操作,同时SpringMVC的依赖注入特性使得服务层和数据访问层的...
在Spring MVC框架中,文件上传是一项常见的功能,用于接收用户通过表单提交的文件数据。在本主题中,我们将深入探讨如何使用Spring MVC的`fileupload`模块来实现这一功能,以及相关的源码分析。 首先,我们需要理解...
如果 Ajax 请求需要将一个表单中的数据传输到后台,那么需要使用 jQuery Form 插件,并将表单数据序列化后传输到服务器。例如: ```javascript function btnform() { $.ajax({ url: "${pageContext.request....
这个压缩包"SpringMVC精品资源--单文件上传,多文件上传,大文件上传,断点续传,文件秒传,图片上传.zip"包含了关于SpringMVC处理文件上传的各种技术点,这些都是开发者在实际项目中经常遇到的需求。 1. **单文件...
1. 在SpringMVC配置文件中加入拦截器配置,拦截两类请求,一类是到页面的,一类是提交表单的。 2. 当转到页面的请求到来时,生成token的名字和token值,一份放到Redis缓存中,一份放传给页面表单的隐藏域。 3. 当...
在Spring MVC中,文件上传通常涉及到前端表单提交和后端控制器处理。前端使用HTML5的`<input type="file">`元素来选择用户想要上传的文件,然后通过AJAX或者传统的HTTP POST方式提交到服务器。在后端,Spring MVC...
- 然后,创建一个Controller,定义一个处理文件上传的方法,该方法的参数应包含`@RequestParam("file") MultipartFile file`,其中"file"是前端表单提交的文件域名称。 - 在Controller方法内部,可以对`...
当用户提交表单时,这些文件数据会作为多部分HTTP请求发送到服务器。Spring MVC提供了`@RequestParam("file") MultipartFile file`注解来接收这样的请求。 1. **文件上传配置**:在Spring MVC配置中,我们需要开启...
8. **前端页面**:创建一个HTML页面,包含一个表单,用户可以通过表单选择文件并提交上传。使用jQuery或者Ajax技术异步提交文件,显示上传结果。 9. **测试**:运行项目,通过浏览器访问前端页面,尝试上传文件。...
在现代Web应用中,文件上传是一...通过Ajax和特定的插件,用户可以在不刷新页面的情况下完成文件上传,同时提交文本信息,提高了交互性和效率。在实际开发中,还需要考虑到安全性、性能优化以及错误处理等多方面因素。
SpringMVC文件上传知识点整理: SpringMVC框架是Java EE开发中常用的轻量级Web框架,其提供了强大的文件上传功能,能够处理多种文件上传的场景。本文档将详细讲解SpringMVC文件上传的实现原理、基本步骤、注意事项...
你需要创建一个表单,包含一个`<input type="file">`元素,用户选择文件后,表单提交到服务器。服务器端的Controller方法会接收到`MultipartFile`对象,你可以检查文件大小、类型,并将其保存到服务器指定的目录。 ...
项目可以通过Tomcat等Servlet容器运行,访问预设的URL(如`http://localhost:8080/springmvc_helloWorld/helloWorld`)来启动表单,提交表单后,服务器将处理请求并返回响应。 通过这个"springmvc_helloWorld"项目...
在SpringMVC中实现图片文件的跨服务器上传是一项常见的任务,尤其在分布式系统或云环境下的应用中。这里我们将深入探讨如何配置和实现这一功能。 首先,为了支持文件上传,我们需要在上传服务器的`pom.xml`文件中...