1. org.springframework.web.multipart.commons.CommonsMultipartResolver 包是Spring中用来处理的上传文件的,我们可以将配置在Spring-context.xml或者action-servlet.xml等配置文件,Spring会自己检查每次请求,如果请求中包含上传的form数据,则会利用此包来解析.例如下面配置:
<!-- upload file -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>2048000</value>
</property>
<property name="maxInMemorySize">
<value>2048</value>
</property>
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
它的设置参数如下:
void cleanupMultipart(MultipartHttpServletRequest request)
Cleanup any resources used for the multipart handling, like a storage for the uploaded files.
protected String determineEncoding(HttpServletRequest request)
Determine the encoding for the given request.
DiskFileUpload getFileUpload()
Return the underlying org.apache.commons.fileupload.DiskFileUpload instance.
boolean isMultipart(HttpServletRequest request)
Determine if the request contains multipart content.
protected DiskFileUpload newFileUpload()
Initialize the underlying org.apache.commons.fileupload.DiskFileUpload instance.
MultipartHttpServletRequest resolveMultipart(HttpServletRequest request)
Parse the given HTTP request into multipart files and parameters, and wrap the request inside a MultipartHttpServletRequest object that provides access to file descriptors and makes contained parameters accessible via the standard ServletRequest methods.
void setDefaultEncoding(String defaultEncoding)
Set the default character encoding to use for parsing requests, to be applied to headers of individual parts and to form fields.
void setMaxInMemorySize(int maxInMemorySize)
Set the maximum allowed size (in bytes) before uploads are written to disk.
void setMaxUploadSize(long maxUploadSize)
Set the maximum allowed size (in bytes) before uploads are refused
void setServletContext(ServletContext servletContext)
Set the ServletContext that this object runs in.
void setUploadTempDir(Resource uploadTempDir)
Set the temporary directory where uploaded files get stored.
2. 下来就需要在action来自己处理解析过的文件
可以来将request转成public interface MultipartHttpServletRequest,这个接口中提供了几个我们方便使用的方法
MultipartFile getFile(String name)
Return the contents plus description of an uploaded file in this request, or null if it does not exist.
Map getFileMap()
Return a Map of the multipart files contained in this request.
Iterator getFileNames()
Return an Iterator of String objects containing the parameter names of the multipart files contained in this request.
如下:
public void uploadSDFile(HttpServletResponse response, HttpServletRequest request) throws Exception {
logger.info("upload sdfile action....");
//remove session value for upload vlaue
if (request.getSession().getAttribute(Constants.IMPORT_SDF_PARSE_RESULT) != null)
request.getSession().removeAttribute(Constants.IMPORT_SDF_PARSE_RESULT);
// upload file
MultipartHttpServletRequest mhs = (MultipartHttpServletRequest) request;
MultipartFile mf = mhs.getFile("file");
// get file
File inputFile = FilePathHelper.uploadFile(mf, Constants.UPLOAD_SDF);
取得MultipartFile,可以利用它的实现类org.springframework.web.multipart.commons.CommonsMultipartFile里众多的方法:
<strong>byte[] getBytes()</strong>
Return the contents of the file as an array of bytes.
<strong>String getContentType()</strong>
Return the content type of the file.
<strong>FileItem getFileItem()</strong>
Return the underlying org.apache.commons.fileupload.FileItem instance.
<strong>InputStream getInputStream()</strong>
Return an InputStream to read the contents of the file from.
St<strong>ring getName()
</strong> Return the name of the parameter in the multipart form.
<strong>String getOriginalFilename()</strong>
Return the original filename in the client's filesystem.
<strong>long getSize()</strong>
Return the size of the file in bytes.
<strong>String getStorageDescription()</strong>
Return a description for the storage location of the multipart content.
protected boolean isAvailable()
Determine whether the multipart content is still available.
<strong>boolean isEmpty()</strong>
Return whether the uploaded file is empty, that is, either no file has been chosen in the multipart form or the chosen file has no content.
void transferTo(File dest)
Transfer the received file to the given destination file.
如下:
public static File uploadFile(MultipartFile mf, String uploadType) throws Exception {
if (mf.isEmpty() || mf.getSize() <= 0)
return null;
CommonsMultipartFile cmf = (CommonsMultipartFile)mf;
DiskFileItem fileItem = (DiskFileItem) cmf.getFileItem();
String fileType = StringUtils.substringAfter(fileItem.getName(), ".");
if (fileType.equalsIgnoreCase(uploadType)) {
File file = fileItem.getStoreLocation();
fileItem.write(file);
return file;
}
return null;
}
org.apache.commons.fileupload.FileItem 有DefaultFileItem, DiskFileItem 实现类,里面有很多方法,方便我们使用.
需要注意是在form提交时,如果用form套form可能会有问题,解决的方法就是用jquery里面ajaxfileupload.
另外如果使用ajax提交方式的话,最好是用异步提交先将文件上传,解析的文件可以放到session中, 之后在callback函数中判断是否上传成功再做下步文件处理.
Note:若出现
2009-4-22 16:38:55 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
是因为缺少一个apache的包:commons-io-1.4.jar 见附件
轉載來自:http://www.iteye.com/topic/367074
<!--EndFragment-->
<!--EndFragment-->
分享到:
相关推荐
这个场景通常涉及到前端的JavaScript或jQuery库(如jQuery File Upload)与后端的Spring MVC控制器之间的交互,以及可能的多线程处理来跟踪文件上传的进度。接下来,我们将深入探讨如何在Spring MVC中实现这一功能。...
在Spring框架中,文件上传是一项常见的功能,尤其在构建Web应用程序时。本实例将深入探讨如何在Java Spring中实现文件上传,并提供一个完整的配置示例。文件上传在现代Web应用中有着广泛的应用,如用户头像上传、...
在Spring MVC 4.2框架中实现AjaxUpload(异步文件上传)是一个常见的需求,它允许用户在不刷新整个页面的情况下进行文件上传,提供更好的用户体验。以下是对这一主题的详细阐述: 1. **AjaxUpload简介**: Ajax...
在Spring MVC中,文件的上传和下载是常见的功能需求,这涉及到客户端与服务器之间的数据传输。本篇文章将深入探讨Spring MVC如何实现文件上传和下载。 ### 文件上传 1. **依赖配置**:在Spring MVC项目中,为了...
在Spring MVC框架中,文件上传和下载是常见的功能需求,尤其在Web应用中。Spring MVC提供了强大的支持来处理这些操作,使得开发者可以轻松地实现文件的上传和下载功能。下面将详细阐述如何利用Spring MVC来实现这两...
在Spring Boot框架中,文件上传是一项常见的功能,用于处理用户通过网页或API接口提交的文件。本示例将深入探讨如何在Spring Boot应用中实现文件上传,包括单个文件和多个文件的上传处理。 首先,我们需要在Spring ...
在Spring MVC中实现文件上传并显示进度是一项常见的需求,特别是在用户需要等待较长时间的大型文件上传时。这个功能可以通过监听文件上传的进度并在前端实时更新来提升用户体验。下面将详细介绍如何利用Spring MVC...
在Spring框架中,文件上传是一项常见的功能,尤其在构建Web应用程序时。Spring提供了一套完善的API来处理文件上传,使得开发者能够轻松地实现文件上传功能。以下是对`spring上传文件`这一主题的详细讲解。 首先,...
在Spring MVC框架中,文件上传是一项常见的功能,用于接收用户通过表单提交的文件数据。这一功能对于构建Web应用程序,尤其是那些需要用户交互并处理上传文件的系统来说至关重要。本项目提供了一个完整的、经过测试...
在Java Spring框架中,文件上传是一项常见的功能,用于接收用户通过Web界面提交的文件。Spring提供了强大的MultipartFile接口,使得处理文件上传变得简单且高效。本文将深入探讨如何使用Java和Spring实现文件上传,...
在Spring MVC框架中,文件上传是一项常见的功能,它允许用户通过Web界面上传本地文件到服务器。这篇文章将深入探讨如何在Spring MVC中实现文件上传,并基于提供的链接和文件名称列表进行详细解析。 首先,理解文件...
在Spring MVC框架中,文件上传是一项常见的功能,用于接收客户端发送的文件数据并保存到服务器。这个"spring 文件上传.rar"压缩包包含了实现这一功能所需的jar包和其他资源,下载后解压即可直接应用于你的项目中。 ...
在Spring MVC中,文件上传是常见的功能之一,用于接收用户通过表单提交的文件数据。本文将深入探讨Spring MVC中的文件上传方法,并基于提供的“spring学习:spring mvc上传文件方法分析”标题进行详细的解析。 首先...
根据提供的文件信息,本文将详细解析如何在Spring MVC框架中实现多附件与文本信息的同时上传功能。这在很多实际应用场景中都非常有用,例如用户在提交表单时常常需要附带图片或其他类型的文件。 ### 一、Spring MVC...
Spring MVC 是一个强大的 web 应用开发框架,它提供了丰富的功能来处理用户请求,包括文件上传和下载。本文将深入探讨如何使用 Spring MVC 实现文件的上传与下载。 首先,要实现文件上传,我们需要引入一些必要的...
本篇文章将深入探讨如何使用Spring Boot实现文件上传功能,包括设置服务器端口、定义文件存储路径以及如何在前端展示所上传的图片。 首先,我们需要在Spring Boot项目中引入所需的依赖。对于文件上传,我们通常会...
在Spring MVC框架中,文件上传是一项常见的功能,用于接收客户端发送的文件数据并进行处理。在本场景中,我们关注的核心是`CommonsMultipartResolver`,这是一个Spring MVC中的多部分解析器,它利用了Apache Commons...
在SpringMVC中实现文件上传是一项常见的任务,它允许用户通过表单将本地文件发送到服务器进行存储或处理。这个"SpringMVC文件上传Demo代码"是一个实例,演示了如何配置和使用SpringMVC来实现这一功能。 首先,我们...
在本文中,我们将深入探讨如何使用Spring MVC和Commons FileUpload库实现一个基本的文件上传功能。Spring MVC是Spring框架的一部分,它为构建基于模型-视图-控制器(MVC)架构的Web应用程序提供了强大的支持。而...