前端JSp页面:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<form name="uploadform" method="post" action="OnlineExam.do" ENCTYPE="multipart/form-data">
<table>
<tr>
<td>请选择要导入的试卷类型: </td>
<td>
<select name="type">
<option value="0">请选择导入的试卷类型</option>
<option value="1">入门考试</option>
<option value="2">职称考试</option>
<option value="3">资格考试</option>
</select>
</td>
</tr>
<tr>
<td>请选择要导入的试卷:</td>
<td><input type="file" name="examFile"/><input type="submit" /></td>
</tr>
</table>
</form>
</body>
</html>
后端的JAVA代码:
package com.land.aminer.presentation.action;
public class OnlineExamAction extends PubAction {
private static OnlineExamBiz onlineExamBiz = OnlineExamBiz.getInstance();
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
OASession oaSession = (OASession) session.getAttribute("oaSession");
String action=request.getParameter("action");
RequestContext requestContext = new ServletRequestContext(request);
String type="";
// f=new FileUpload();
// f.setHeaderEncoding("UTF-8");
// 判断表单是否是Multipart类型的。这里可以直接对request进行判断,不过已经以前的用法了
if (FileUpload.isMultipartContent(requestContext)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置文件的缓存路径
factory.setRepository(Repository.getTempDir());
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8");//中文文件名乱码在这里处理
// 设置上传文件大小的上限,-1表示无上限
upload.setSizeMax(-1);
List items = new ArrayList();
try {
// 上传文件,并解析出所有的表单字段,包括普通字段和文件字段
items = upload.parseRequest(request);
} catch (FileUploadException e1) {
e1.printStackTrace();
}
// 下面对每个字段进行处理,分普通字段和文件字段
Iterator it = items.iterator();
ExamPaper ep=new ExamPaper();
String fileName="";
while (it.hasNext()) {
FileItem fileItem = (FileItem) it.next();
// 如果是普通字段
if (fileItem.isFormField()) {
if ("type".equalsIgnoreCase(fileItem.getFieldName())) {
ep.setType(Integer.valueOf(fileItem.getString()));
}
}else{
//在这里,IE会提供包括路径在内的文件名,我要移除这个路径,可以用FileItemUtils来处理
if (fileItem.getName()!= null)
{
fileName = FilenameUtils.getName(fileItem.getName());
}
File savedFile = new File(Repository.getExamPaperDir(), fileName );
fileItem.write(savedFile);
}
}
}
return mapping.findForward("edit");
}
}
分享到:
相关推荐
### Commons-FileUpload 实现文件上传下载 #### 知识点概述 Commons-FileUpload 是 Apache 提供的一个用于处理 HTTP 文件上传的组件。它基于 Servlet 规范,并且能够解析来自 `multipart/form-data` 编码类型的 ...
在这个场景中,`commons-fileupload-1.3.1.jar` 和 `commons-io-2.4.jar` 是两个至关重要的库,它们提供了强大的文件上传支持。 `commons-fileupload-1.3.1.jar` 是Apache Commons FileUpload项目的实现,这是一个...
对于MyBatis,虽然它主要关注数据库操作,但在处理文件时,可以先利用`Commons FileUpload`和`Commons IO`将文件保存到服务器,然后再通过MyBatis的SQL语句将文件路径或其它相关信息存入数据库。 在图片处理方面,...
在实际应用中,开发者通常会结合Servlet或Spring MVC等框架,利用FileUpload和IO库提供的API来构建文件上传功能。例如,使用`DiskFileItemFactory`配置临时存储路径,创建`ServletFileUpload`实例来解析请求,再通过...
在实际开发中,当你需要在Web应用中实现文件上传功能时,首先会配置`commons-fileupload-1.2.1.jar`来解析请求,然后利用`commons-io-1.4.jar`处理上传后的文件,比如保存到服务器的指定目录,或者进行一些预处理...
本教程将详细介绍如何利用commons-fileupload实现文件上传功能,并提供一个简单的实例。 **一、Apache Commons FileUpload简介** Apache Commons FileUpload是Apache软件基金会开发的一个开源组件,专门处理HTTP...
通过结合使用Apache Commons FileUpload和Commons IO,开发者可以构建出高效且稳定的文件上传功能,同时避免了自己实现这些复杂逻辑的麻烦。这两个库的兼容性良好,广泛应用于各种Java Web项目中,是Java开发者的...
本教程将详细介绍如何利用commons-fileupload库来实现在Java Web应用中的文件上传和下载,并确保在整个过程中不会出现中文乱码问题。 1. **Apache Commons FileUpload简介** Apache Commons FileUpload是一个开源...
Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传和I/O操作的重要库。这两个库在处理Web应用,特别是基于JSP(JavaServer Pages)的文件上传功能时,扮演着核心角色。在这个主题中,我们将...
在本文中,我们将深入探讨如何使用Apache Commons FileUpload组件来实现文件上传功能。Apache Commons FileUpload是一个用于处理HTTP请求中的多部分数据的Java库,它使得在Servlet或JSP应用中处理文件上传变得简单易...
此漏洞为FileUpload 库中的一个高危漏洞,这个库作为Apache Struts 2的一部分,被用作文件上传的默认机制。攻击者可以在未经授权的情况下,执行任意代码并可获取目标系统的所有权限。 CNVD对该漏洞的综合评级为...
在这个教程中,我们将探讨如何在WebWork 2.2.7的Action中利用Apache Commons FileUpload库来实现文件上传功能,并处理文件流。Apache Commons FileUpload是一个强大的库,专门用于处理HTTP请求中的多部分/表单数据,...
在开发Java应用程序,尤其是涉及到Web应用中的文件上传功能时,`commons-fileupload.jar`和`commons-io.jar`是两个至关重要的库。这两个JAR文件分别提供了Apache Commons FileUpload和Apache Commons IO项目的功能,...
例如,开发者可以先使用FileUpload解析出上传的文件,然后利用Commons IO将其保存到服务器的指定位置。 这两个库的源代码文件(sources)也一同提供,这对于学习和理解其内部实现机制非常有帮助。通过阅读源码,...
`commons-fileupload-1.3.1`和`commons-io-2.4`是Apache Commons项目中的两个重要库,它们为处理文件上传和下载提供了强大的支持。本教程将详细介绍如何利用这两个库在Spring MVC框架中实现文件上传和下载。 `...
接着,可以利用FileUpload API解析请求,获取上传文件的信息,并将其保存到服务器。 为了确保文件上传的安全性,开发者需要考虑以下几个关键点: 1. **文件大小限制**:限制用户上传文件的大小,防止大文件消耗过多...
当你需要在Web应用中实现文件上传功能时,FileUpload负责解析请求并处理文件,而Commons IO则可以帮助你进行文件的存储、移动或处理。这两个库的结合,让开发者能方便地实现复杂的文件操作,同时保持代码的简洁和...
在使用这两个库进行文件上传时,通常先利用Commons IO处理文件I/O,然后用Commons FileUpload解析HTTP请求中的多部分数据,提取上传的文件。这样可以构建出稳定、健壮的文件上传功能,同时避免了直接处理Servlet API...
《Java Web文件上传:commons-fileupload-1.2.1详解》 在Java Web开发中,文件上传是一项常见的功能,用户可能需要上传图片、文档等各类文件。Apache Commons FileUpload库是一个强大的工具,用于处理HTTP协议中的...
通过以上步骤,我们可以实现一个利用Apache Commons FileUpload处理文件上传,结合AJAX和ProgressEvent显示进度条的Web应用。这样的功能不仅提高了用户体验,还使得文件上传过程更加可控和透明。需要注意的是,不同...