### Struts1 实现文件上传的关键技术点 在Struts1框架中实现文件上传功能是一项常见但又具有一定技术挑战的任务。下面将详细解析文件上传的实现过程,包括关键类的使用、文件处理逻辑以及异常处理等方面。 #### Struts1框架简介 Struts1是Apache Struts的一个版本,它是一个用于构建基于Java的Web应用程序的开源框架。Struts1提供了MVC(Model-View-Controller)架构模式的支持,使得开发者能够更加清晰地组织代码结构,易于维护与扩展。 #### 文件上传涉及的主要类和技术 为了实现文件上传功能,主要会用到以下几个类和技术: 1. **ActionForm**:Struts1中的表单对象,用于封装用户提交的数据。 2. **ActionMapping**:表示一个请求映射,用于连接ActionForm和Action。 3. **Action**:处理用户请求的核心类,负责业务逻辑处理。 4. **DispatchAction**:Struts1中的一个特殊Action,支持方法调度。 5. **FormFile**:用于封装文件上传数据的对象。 6. **HttpServletRequest** 和 **HttpServletResponse**:分别代表HTTP请求和响应对象。 #### 文件上传的具体实现步骤 1. **定义ActionForm**:首先需要定义一个继承自`ActionForm`的类,该类中包含一个或多个`FormFile`类型的成员变量,用来接收用户上传的文件。 2. **配置文件上传**:在`struts-config.xml`配置文件中指定允许上传的文件类型和大小限制。 3. **编写Action**:在Action类中处理文件上传的具体逻辑,包括文件的保存路径、文件名的生成等。 #### 文件处理逻辑分析 1. **获取上传文件**:通过`HttpServletRequest`对象获取上传的文件信息。 2. **验证文件格式**:检查上传文件是否符合预设的格式要求。如代码片段所示,只允许`.jpg`, `.txt`, 和`.bmp`三种格式的文件被上传。 3. **生成新的文件名**:为了避免文件覆盖等问题,通常需要为上传的文件生成一个新的文件名。一种常见的做法是结合当前时间戳和文件的原始扩展名来生成唯一文件名。 4. **读取文件内容并写入服务器端**: - 使用`InputStream`从客户端读取文件内容。 - 创建一个`OutputStream`对象指向服务器端的目标文件。 - 将`InputStream`中的内容复制到`OutputStream`中,完成文件的服务器端存储。 5. **文件大小转换**:根据文件的大小单位(Byte, KB, MB),进行相应的格式化输出,以便于用户理解上传文件的实际大小。 #### 示例代码解析 - **文件名的生成**:利用当前时间戳生成唯一的文件名,确保每个上传的文件都有一个独一无二的名字。 - **文件格式检查**:通过字符串操作判断文件后缀名是否属于预设的合法格式列表,如果不符合,则返回错误提示。 - **文件大小计算与显示**:根据文件的实际大小,将其转换为更易读的单位(如KB或MB),并格式化输出。 Struts1中的文件上传功能实现涉及到多个核心组件和技术点的综合运用。开发者需要对Struts1框架有深入的理解,并熟练掌握相关API的使用方法。此外,在实际开发过程中还需要注意安全性问题,比如防止恶意文件上传导致的安全漏洞等。















import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
public class FileAction extends DispatchAction {
public ActionForward upLoadFile(ActionMapping mapping, ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception {
Date date = new Date();
//FormFile用于指定存取文件的类型
//获取当前的文件
File file = new File("");
// 获得系统的绝对路径 String dir = servlet.getServletContext().getRealPath("/image");
//我上传的文件没有放在服务器上。而是存在D:D:\\loadfile\\temp\\
String dir="D:\\loadfile\\temp\\";
int i = 0;
String type = file.getFileName();
while(i!=-1){


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


最新资源
- 物联网系统中的软件(何积丰).ppt
- 交通信号灯的作用和种类.ppt
- 企业电子商务运营操作手册.doc
- 2022年注册测绘师测绘项目管理部分.doc
- 基于Storm分布式实时计算框架的视频帧抓取与人脸特征提取系统-支持多并行度配置与动态库加载的流式处理引擎-用于大规模视频流实时分析与人脸识别任务-整合Kafka消息队列与HDFS.zip
- 软件生存期模型特点及优缺点.ppt
- 工程施工项目管理.docx
- 网络商城创建方案.doc
- 公安大楼网络视频监控方案书.doc
- 基于单片机的报警系统.docx
- 软件程序员年度工作总结五篇.doc
- 算法案例进位制.pptx
- 智能家居公司年中工作总结.pptx
- 网络高清视频监控系统维保方案样本.doc
- 工程项目管理系统.docx
- 项目七淘宝电子商务模式.ppt


