Struts1文件上传、单文件、多文件上传(上传文件大小问题,如何设置无限制)
### Struts1 文件上传知识点详解 #### 一、概述 在Web开发中,文件上传是一项常见功能。Apache Struts框架提供了强大的支持来进行文件上传。本文将详细介绍如何在Struts1中实现单文件上传和多文件上传,并探讨如何解决上传文件大小限制的问题。 #### 二、单文件上传 ##### 1. JSP页面设计 为了实现单文件上传,我们需要在JSP页面中创建一个表单,该表单需要包含文件输入字段以及提交按钮。同时,为了能够正确地上传文件,表单需要设置`enctype="multipart/form-data"`属性。 ```jsp <%@ page pageEncoding="UTF-8" %> <h1>文件上传</h1> <hr/> <form action="upload.action" method="post" enctype="multipart/form-data"> name: <input type="text" name="name"/> <br/> upload: <input type="file" name="file"/> <br/> <input type="submit" value="上传"/> </form> ``` **操作点**: `enctype="multipart/form-data"`是关键,它确保了文件数据可以被正确编码并发送到服务器端。 ##### 2. Form Bean定义 为了接收前端传来的文件,我们需要定义一个继承自`ActionForm`的类,并且需要添加两个属性,分别用于接收文件名和文件对象。需要注意的是,这些属性的名字需要与JSP页面中的名称保持一致。 ```java package fileUpload.singleFileUpload.form; import org.apache.struts.action.ActionForm; import org.apache.struts.upload.FormFile; public class UploadForm extends ActionForm { private static final long serialVersionUID = 1L; private String name; private FormFile file; public String getName() { return name; } public void setName(String name) { this.name = name; } public FormFile getFile() { return file; } public void setFile(FormFile file) { this.file = file; } } ``` **操作点**: 使用`FormFile`类来处理文件对象,属性名称必须与JSP页面中的`name`属性值一致,否则可能会导致空指针异常。 ##### 3. Action类处理 在`Action`类中,我们可以通过`getXXX()`方法获取到前端传递过来的数据。此外,还需要编写代码将文件保存到指定位置。 ```java package fileUpload.singleFileUpload.action; import java.io.FileOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import fileUpload.singleFileUpload.form.UploadForm; public class UploadAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UploadForm uf = (UploadForm) form; String name = uf.getName(); FormFile file = uf.getFile(); System.out.println("name=" + name); String filename = file.getFileName(); System.out.println("fileName=" + filename); FileOutputStream fos = new FileOutputStream("d:\\[" + name + "]" + filename); fos.write(file.getFileData()); fos.flush(); fos.close(); return mapping.findForward("success"); } } ``` **操作点**: 在`execute`方法中通过`UploadForm`获取文件对象,并使用`FileOutputStream`将文件数据写入磁盘。 #### 三、多文件上传 多文件上传在实现上与单文件上传类似,但需要在前端增加多个文件输入字段,并在后端进行循环处理每个文件。 ```jsp <form action="multiUpload.action" method="post" enctype="multipart/form-data"> <input type="file" name="files" multiple="multiple"/> <br/> <input type="submit" value="上传"/> </form> ``` ```java // Action 类中的处理逻辑 List<FormFile> files = ((UploadForm) form).getFiles(); for (FormFile file : files) { // 处理每一个文件 } ``` #### 四、文件大小限制问题 默认情况下,Struts1对上传文件的大小有限制。如果需要上传大文件或取消文件大小限制,可以通过以下几种方式实现: 1. **修改配置文件**: 在`struts-config.xml`中,可以通过设置`maximumSize`属性来调整最大上传文件大小。 ```xml <form-bean name="uploadForm" type="com.example.UploadForm"> <form-property name="maximumSize" value="10485760" /> </form-bean> ``` 2. **使用第三方库**: 如Apache Commons FileUpload组件,它可以更加灵活地控制文件上传的各个方面,包括文件大小限制。 #### 五、总结 通过上述步骤,我们可以顺利地在Struts1框架中实现单文件和多文件上传功能,并能够根据实际需求调整文件大小限制。这些技术点对于从事Web开发的工程师来说是非常重要的,掌握它们可以帮助我们在实际项目中更好地处理文件上传相关的业务逻辑。













Struts2实现文件上传的文章(http://blog.csdn.net/itwit/article/details/7031785)
1、单文件上传
1)JSP页面(singleFileUpload.jsp)
[java] view plain copy
<%@page pageEncoding = "UTF-8"%>
<h1>
文件上传
</h1>
<hr />
<form action="upload.action" method="post" enctype="multipart/form-data">
name:
<input type="text" name="name" />
<br />
upload:
<input type="file" name="file" />
<br />
<input type="submit" value="上传" />
</form>
操作点:enctype="multipart/form-data"
2)Form(UploadForm)
[java] view plain copy
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class UploadForm extends ActionForm {
private static final long serialVersionUID = 1L;
private String name;
private FormFile file;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
}
操作点:Struts1提供了一个FormFile类来处理文件上传操作,另外注意,属性name,file名字必须与jsp页面一致,否则会报空指针。
剩余10页未读,继续阅读


- 粉丝: 2355
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 校园综合布线建设项目.doc
- 解读关注网络安全预防网络诈骗贯彻解读课件.pptx
- 项目管理人员薪酬激励研究.doc
- 网络营销培训之整合网络营销合力创造价值.pptx
- 2023年网络工程师考点大全.doc
- 自信心最重要-我连闯9关进微软.docx
- 国家级大创 ESP32智慧药房取药系统-大创资源
- 计算机维修电脑部件组成实训报告.doc
- 远卓中社网创建中国一流的劳动保障服务网络项目建议书.pptx
- vcos_build-智能车资源
- 摇篮网网络推广方案.ppt
- 电子商务法后的电子商务(解读版).ppt
- 医院无线网络方案.doc
- immerse-in-algorithm-蓝桥杯资源
- 嵌入式硬件技术基础复习提纲(10页).doc
- 计算机病毒蠕虫和特洛伊木马介绍网络安全基础课讲义.pptx


