struts提供了<html:file>标签,集成了Apache的commons-upload工具包,上传文件变得更加简单,不再需要解析Request、遍历所有的输入域、判断是否为文件等。
struts对Apache的commons-upload进行了再封装,把上传文件封装成FormFile对象,直接获取该对象,将文件数据保存即可。
代码1:UploadForm.java
package com.strust1.test.actionFrom;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class UploadForm extends ActionForm {
private FormFile file;
private String action;
private String text;
public FormFile getFile() {
return file;
}
public void setFile(FormFile file) {
this.file = file;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
代码2:upload.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'upload.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<html:form action="/upload?action=upload" enctype="multipart/form-data">
文件:<html:file property="file" style="width:200px;"></html:file><br/>
备注:<html:textarea property="text" style="width:200px"></html:textarea><br/>
<html:submit value="开始上传"></html:submit>
</html:form>
</body>
</html>
注意:上传文件时Form表单要指定enctype为multipart/form-data,method一定要设置为POST。<html:form/>标签默认为POST。
FormFile并不是普通的文件,不能直接保存。FormFile提供getInputStream()接口,可以获得它的输入流,将它的内容保存到指定的文件中即可。
代码3:UploadAction.java
package com.strust1.test.action;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
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 com.strust1.test.actionFrom.UploadForm;
public class UploadAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UploadForm uploadForm = (UploadForm)form;
if("upload".equals(uploadForm.getAction())){
return upload(mapping, form, request, response);
}
return mapping.getInputForward();
}
public ActionForward upload(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception{
UploadForm uploadForm =(UploadForm)form;
StringBuffer buffer = new StringBuffer();
buffer.append("<style> body{font-size:12px;}</style>");
if(uploadForm.getFile() != null && uploadForm.getFile().getFileSize() > 0){
File classes = new File(getClass().getClassLoader().getResource("").getFile());//获得文件夹/WEB-INF/Classes
File uploadFolder = new File(classes.getParentFile().getParentFile() , "upload");//获取文件夹webRoot下的文件夹/upoad
uploadFolder.mkdirs();//创建文件夹
File file = new File(uploadFolder, uploadForm.getFile().getFileName());//保存到 /upload/下面
System.out.println(file.getPath());
OutputStream ous = null;
InputStream ins =null;
try{
byte[] b = new byte[1024];
int len = 0;
ins = uploadForm.getFile().getInputStream();
ous = new FileOutputStream(file);
while((len = ins.read(b)) != -1){
ous.write(b ,0 ,len);
}
}finally{
ins.close();
ous.close();
}
buffer.append("文件:<a href=upload/" + file.getName() + "target=_blank>" + file.getName() + "</a><br/>");
}else{
buffer.append("文件: 没有选择文件<br/>");
}
buffer.append("备注:" + uploadForm.getText() + "<br/>");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(buffer.toString());
return null;
}
}
文件保存在本Web应用的/upload文件夹下。
分享到:
相关推荐
在这个"struts1.2简单文件上传例子"中,我们将深入探讨Struts1.2框架如何处理文件上传功能。 首先,文件上传在Web应用中是一个常见的需求,例如用户可能需要上传个人头像、文档或者其他类型的数据。在Struts1.2中,...
本项目"基于Struts1.2的上传下载Demo"是针对该框架的一个实践示例,旨在帮助开发者理解和解决在Struts1.2环境中进行文件上传与下载的问题。 首先,让我们深入了解一下Struts1.2中的文件上传功能。在Struts1.2中,...
在Struts1.2中实现动态多文件上传是一项常见的需求,它允许用户在一次提交中上传多个文件,如图片、文档等。这项功能的实现涉及前端表单设计、后端处理逻辑以及文件存储策略。 首先,我们需要创建一个HTML或JSP页面...
在`struts1.2-jars`这个压缩包中,包含了Struts1.2运行所需的各个jar文件,比如`struts-core.jar`包含了框架的核心组件,`struts-tiles.jar`包含Tiles视图管理组件,`struts-taglib.jar`提供了与JSP相关的标签库,...
在"Struts1.2 多文件上传下载"这个主题中,我们将深入探讨如何使用Struts1.2实现多个文件的上传和下载功能。 首先,文件上传功能在Web应用中很常见,例如用户可能需要上传个人照片、文档或其他媒体文件。在Struts...
Struts1.2 文件上传是Java Web开发中的一个重要实践,尤其在处理用户通过网页提交大体积数据时,如图片、文档等。这个"struts1.2文件上传demo"是一个基于MyEclipse6.0集成开发环境的示例项目,用于演示如何在Struts...
下面将详细阐述如何在Struts1.2环境下实现图片上传。 首先,我们需要在ActionForm类中创建一个File类型的属性,用于接收用户上传的图片文件。例如: ```java public class UploadForm extends ActionForm { ...
在Struts1.2中实现文件上传是一项常见的需求,它可以允许用户通过Web界面上传文件到服务器。在这个过程中,我们将探讨如何使用Struts1.2框架来实现文件上传功能,并涉及到相关的知识点。 1. **MultipartRequest**: ...
这篇博客"偶遇struts1.2文件上传"可能涉及到了如何在Struts1.2框架下实现文件上传功能,这是一个常见的需求,特别是在用户需要提交图像、文档等数据时。下面我们将详细讨论Struts1.2中的文件上传机制及其相关的源码...
在"struts1.2-jars.rar"这个压缩包中,包含了Struts1.2框架运行所需的全部JAR文件,这些文件是开发和运行Struts1.2应用的基础。 一、Struts1.2核心组件: 1. `struts-core.jar`:包含Struts框架的核心类,如Action...
Struts1.2框架是Apache组织开发的...通过学习这个源代码,开发者可以深入理解Struts1.2框架处理文件上传下载的机制,并将其应用到自己的项目中。同时,也可以借鉴其中的安全策略和用户体验设计,提升Web应用的交互性。
Struts1.2-jars.zip 是一个专门为Java开发者准备的压缩包,包含了Struts1.2框架所需的多个jar文件。Struts是一个非常经典的MVC(Model-View-Controller)架构框架,它在Java Web开发中占有重要地位,尤其是在早期的...
5. **处理上传过程**:在Struts1.2中,通常在ActionForm中定义一个FormFile类型的字段,用于接收上传的文件。然后在对应的Action中,读取FormFile对象,进行格式检查和大小验证,如果符合要求则将文件保存到服务器的...
在Struts1.2框架中,FormFile是用于处理文件上传的一个关键组件,尤其是在实现批量上传功能时。本文将深入探讨如何使用FormFile在Struts1.2中实现实现批量文件上传,以及相关的技术要点。 一、Struts1.2简介 Struts...
### Struts 1.2 下实现文件上传进度条的关键知识点 #### 一、背景与目的 在基于Struts 1.2的Web应用中,实现文件上传时常常需要提供一个友好的用户界面来显示文件上传进度。这不仅提高了用户体验,还能够实时反馈...
在"Struts1.2上传+下载"这个主题中,我们将探讨如何使用Struts1.2框架来实现文件的上传和下载功能。 **文件上传功能:** 在Struts1.2中,文件上传通常依赖于`commons-fileupload`和`commons-io`这两个Apache ...
根据提供的文件信息,本文将详细解析Struts 1.2框架中的文件上传功能,并通过具体的代码示例来阐述其实现过程和技术要点。 ### Struts 1.2框架简介 Struts是一个开源的Web应用程序框架,它遵循MVC(Model-View-...
struts1.2 图片文件上传(单个/动态多个) 单个的采用通用Action 需要ActionForm的,而动态多个上传是采用动态代理类(DispatchAction) 希望对大家有用,另JSP在IE测试通过,JS我就不再处理了!
在Struts 1.2框架中,文件上传是一个常见的需求,尤其在开发Web应用程序时。Struts 1.2提供了一种便捷的方式来处理文件上传,它通过`org.apache.struts.upload.FormFile`类来实现。这个类是Struts 1.x版本中处理文件...
在这个特定的场景中,我们关注的是如何在Struts1.2中实现文件的上传和下载功能。 上传文件通常涉及用户通过网页选择本地文件,然后将这些文件发送到服务器的过程。在Struts1.2中,这通常通过使用`ActionForm`类和...