UploadAction
package com.yqh.action;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.MappingDispatchAction;
/**
*上传文件
*/
public class UploadAction extends MappingDispatchAction {
private Log logger = LogFactory.getLog(UploadAction.class);
public ActionForward toUploadFile(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
try {
String fileName = uploadFile(request);
if (fileName == null) {
return mapping.findForward("InvalidFile");
}
request.setAttribute("fileName", fileName);
logger.info(" 执行了上传文件操作");
} catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("uploadFile");
}
private String uploadFile(HttpServletRequest request) {
String fileName = "";
try {
DiskFileItemFactory fc = new DiskFileItemFactory();
// 设置文件的最大限度,如果超出这个限度,则将文件写入磁盘
fc.setSizeThreshold(4000);
// 文件超过最大限度时,写入磁盘的临时路径
fc.setRepository(new File("c:\\tmp"));
ServletFileUpload fu = new ServletFileUpload(fc);
// 设置最大文件尺寸,单位为字节,这里是4MB
fu.setSizeMax(10194304);
// 得到所有的文件
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
// 依次处理每一个文件
while (i.hasNext()) {
FileItem fi = (FileItem) i.next();
//获得文件名,这个文件名包括路径
fileName = fi.getName();
//限制文件类型
// if (!fileName.endsWith(".xls"))
// return null;
//限制文件大小
// if (fi.getSize() > 10194304)
// throw new RuntimeException("File is too large!");
fileName = fileName.substring(fileName.lastIndexOf("\\") + 1,
fileName.length());
// 写入文件
fi.write(new File("d:/upload/" + fileName));
System.out.println(fileName + " upload success");
}
} catch (Exception e) {
e.printStackTrace();
}
return fileName;
}
}
4.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://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
相关推荐
在Java开发中,上传文件是一项常见的任务,而`commons-fileupload-1.3.3.jar`和`commons-io-2.6.jar`是Apache Commons项目中的两个重要库,专门用于处理HTTP请求中的文件上传功能。这两个库为开发者提供了便捷、高效...
在Struts2中处理文件上传功能时,通常需要依赖两个关键的第三方库:`commons-fileupload`和`commons-io`。这两个jar包在Java文件上传处理中扮演着至关重要的角色。 `commons-fileupload-1.2.1.jar`是Apache Commons...
在Struts2中,文件上传功能是通过第三方库来实现的,其中最常用的就是Apache Commons FileUpload和Apache Commons IO。这里提到的"commons-fileupload-1.2.1.jar"和"commons-io-1.4.jar"就是这两个库的特定版本。 *...
Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...
7. **与其他库的集成**:Apache Commons FileUpload可与Servlet API、Spring MVC、Struts等Web框架无缝集成,简化了在这些框架中实现文件上传的复杂性。 源码分析对于理解其内部工作原理非常有帮助。`commons-...
总之,Apache Commons FileUpload是Java Web开发中处理文件上传不可或缺的工具,它提供了高效、灵活且安全的文件上传解决方案。通过理解和熟练运用这个库,开发者可以轻松地在自己的应用中实现复杂的文件上传功能。
7. **与Struts、Spring等框架的整合**:Commons FileUpload库可以轻松与主流的Java Web框架集成,如Struts、Spring MVC等,使得文件上传功能的实现更加便捷。 总的来说,Apache Commons FileUpload库是Java开发人员...
标题和描述中提到的"commons-fileupload-1.2.jar"和"commons-io-1.3.1.jar"是两个在Java开发中常用的开源库,主要用于处理文件上传功能。这两个库是Apache Commons项目的一部分,提供了丰富的文件操作和网络通信功能...
此漏洞为FileUpload 库中的一个高危漏洞,这个库作为Apache Struts 2的一部分,被用作文件上传的默认机制。攻击者可以在未经授权的情况下,执行任意代码并可获取目标系统的所有权限。 CNVD对该漏洞的综合评级为...
以上就是关于Struts2中利用Apache Commons FileUpload和Apache Commons IO进行文件上传和下载的基本原理和实现流程。这两个库大大简化了处理文件操作的复杂性,提高了代码的可读性和可维护性。在实际开发中,应根据...
Apache Commons FileUpload与Apache Commons IO是Java开发中用于处理文件上传功能的重要库。这两个组件提供了高效、灵活且易于使用的API,使得在Web应用程序中接收和处理用户上传的文件变得非常简单。 **Apache ...
这两个库通常与Struts1框架结合使用,以实现Web应用中的文件上传操作。 **Apache Commons FileUpload** Apache Commons FileUpload是Apache软件基金会的一个开源项目,提供了一套处理HTTP请求中多部分/表单数据的...
总的来说,`commons-fileupload-1.2.1.jar`和`commons-io-1.3.2.jar`这两个库在Struts和Spring MVC中扮演着关键角色,使得处理文件上传变得更加便捷和可靠。开发者可以通过这些库提供的API轻松实现文件上传功能,...
Struts的FormFile与Commons-FileUpload控件使用心得。
总之,`commons-fileupload-1.2.1.jar`和`commons-io-1.4.jar`在Struts2框架中扮演了重要的角色,为开发者提供了便捷且安全的文件上传功能。通过合理使用这两个库,我们可以构建出高效、稳定的文件上传系统。
在Java Web开发中,文件上传和下载是常见的功能需求,Apache Commons FileUpload库提供了一种高效、方便的方式来处理这些操作。本教程将详细介绍如何利用commons-fileupload库来实现在Java Web应用中的文件上传和...
在这个场景中,"commons-fileupload.jar" 和 "commons-io-1.4.jar" 是实现Struts2文件上传的关键依赖库。 `commons-fileupload.jar` 是Apache Commons FileUpload组件的实现,它提供了一个简单而强大的API,用于...
《Java Web文件上传:commons-fileupload-1.2.1详解》 在Java Web开发中,文件上传是一项常见的功能,用户可能需要上传图片、文档等各类文件。Apache Commons FileUpload库是一个强大的工具,用于处理HTTP协议中的...
Apache Commons FileUpload库解决了这个问题,它提供了一套高级API,允许开发者以流式传输的方式处理上传的文件,从而避免内存溢出问题并支持大文件分块上传。 以下是一些关于`commons-fileupload`库的核心知识点:...
struts2中用于文件上传的两个jar包,非常实用。最简单的文件上传,在做项目之前需要导入的jar包组件:commons-fileupload-1.2.2.jar、commons-io-2.2.jar(依赖包)