package com.defined;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.struts.upload.MultipartRequestWrapper;
public class MultipartRequest extends MultipartRequestWrapper implements
HttpServletRequest {
private Map fieldName = null;
public MultipartRequest(HttpServletRequest request)
throws FileUploadException {
super(request);
String contentType = request.getContentType();
// 如果是上传文件类型的form
if ((contentType != null)
&& contentType.startsWith("multipart/form-data")) {
fieldName = new HashMap();
init(request);
}
}
private void init(HttpServletRequest request) throws FileUploadException {
DiskFileUpload diskFileUpload = new DiskFileUpload();
List items = diskFileUpload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
addTextParameter(item);
} else {
addFileParameter(item);
}
}
}
private void addTextParameter(FileItem item) {
String name = item.getFieldName();
String value = null;
boolean haveValue = false;
String encoding = request.getCharacterEncoding();
if (encoding != null) {
try {
value = item.getString(encoding);
haveValue = true;
} catch (Exception e) {
}
}
if (!haveValue) {
try {
value = item.getString("ISO-8859-1");
} catch (java.io.UnsupportedEncodingException uee) {
value = item.getString();
}
haveValue = true;
}
this.setParameter(name, value);
}
private void addFileParameter(FileItem item) {
fieldName.put(item.getFieldName(), item);
}
public FileItem getFileItem(String name) {
return (FileItem) fieldName.get(name);
}
public String getNotNullParameter(String name) {
String temp = this.getParameter(name);
return temp == null ? "" : temp;
}
public Double getDouble(String name) {
String temp = this.getParameter(name);
return temp == null ? null : Double.valueOf(temp);
}
public Float getFloat(String name) {
String temp = this.getParameter(name);
return temp == null ? null : Float.valueOf(temp);
}
public Integer getInteger(String name) {
String temp = this.getParameter(name);
return temp == null ? null : Integer.valueOf(temp);
}
public Date getDate(String name) {
String temp = this.getParameter(name);
return temp == null ? null : Date.valueOf(name);
}
public Date getNowDate() {
return new java.sql.Date(System.currentTimeMillis());
}
//使用方法
public static void main(String[] args) {
try {
MultipartRequest req = new MultipartRequest(null/*HttpServletRequest request*/);
FileItem fileItem = req.getFileItem("fileName");
InputStream in = fileItem.getInputStream();
FileOutputStream fio = new FileOutputStream("d:\\aa.gif");
byte b[] = new byte[1024];
while ((in.read(b, 0, 1024)) != -1) {
fio.write(b);
fio.flush();
}
fio.close();
} catch (FileUploadException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Struts2上传文件(直接用request)
2. 创建上传文件的JSP页面。 3. 编写Action类,使用Apache Commons FileUpload处理文件。 4. 验证和保存上传的文件。 5. 显示上传结果。 通过这种方式,你可以构建一个灵活且易于维护的文件上传系统。记住,文件...
- `FormFile`: 用于封装上传文件的信息,包括文件名、类型、大小等。 ### 4. 配置文件 在Struts配置文件(struts-config.xml)中,你需要添加`multipart-config`元素到`<form-beans>`部分,指定文件上传的临时存储...
在上述代码中,我们限制了最大上传文件大小为5MB,并将文件保存到了服务器的一个特定目录。为了防止路径遍历攻击,应使用相对路径或者绝对路径,并确保路径安全。 最后,前端页面(例如upload.jsp)需要包含一个...
// 处理上传文件的逻辑 } } ``` 3. **表单提交**: 在前端HTML页面,创建一个`enctype="multipart/form-data"`的表单,这样浏览器会知道需要以多部分形式发送数据: ```html ``` 4. **处理上传**: ...
配置文件中可以指定上传文件的存储路径,例如在struts-config.xml中定义一个action-mapping,设置其`parameter`属性为文件上传的目录。为了更好地管理上传的文件,可以考虑创建多级目录结构,如按照日期或用户ID来...
如果需要上传文件,该类中的相应属性应该声明为`org.apache.struts.action.FormFile`类型。Struts框架会自动将客户端上传的文件封装到FormFile对象中。 ```java public class BookForm extends ActionForm { ...
首先,需要在`struts.xml`配置文件中启用文件上传插件,并设置最大上传文件大小。例如: ```xml <constant name="struts.multipart.maxSize" value="10485760"></constant> <!-- 10MB --> ...
`ActionForm`是Struts1.2中处理表单数据的模型类,而`File`对象则用来接收上传文件的数据。 1. **配置struts-config.xml**: 在`struts-config.xml`文件中,你需要定义一个Action,这个Action对应于处理文件上传的...
本文将详细介绍如何在Struts1中实现单文件上传和多文件上传,并探讨如何解决上传文件大小限制的问题。 #### 二、单文件上传 ##### 1. JSP页面设计 为了实现单文件上传,我们需要在JSP页面中创建一个表单,该表单...
在Struts1.2版本中,实现多文件上传是一项常见的需求,它允许用户在一次提交中上传多个文件,这对于数据交互、资源分享等场景非常实用。在本教程中,我们将深入探讨如何在Struts1.2中实现这一功能。 首先,理解多...
在这个“Struts1实现的文件上传”项目中,我们将深入探讨如何在Struts1框架下实现文件上传功能,并不涉及文件下载的部分。 首先,理解文件上传的基本流程是至关重要的。在Web应用中,用户通过HTML表单选择本地文件...
在Struts2中,文件上传功能是常见的需求,特别是在处理用户提交表单时,比如上传图片、文档等。本文将详细讲解如何在Struts2中实现文件上传功能,并探讨相关知识点。 1. **Struts2 Action类配置**: 在Struts2中,...
7. **安全性考虑**:为了确保应用的安全性,应限制上传文件的大小和类型,防止恶意用户上传大文件占用服务器资源,或者上传包含恶意代码的文件。 在提供的`UpLoadWeb`压缩包中,包含了完整的源码,包括ActionForm、...
在本文中,我们将深入探讨如何使用Servlet来理解Struts2中的文件上传原理。Servlet是Java Web应用程序中的一个组件,用于处理HTTP请求和响应。而Struts2是一个基于MVC(模型-视图-控制器)设计模式的开源Web应用框架...
本教程将详细介绍如何在Struts中实现无中文乱码的文件上传与下载,并涵盖任意数量的文件上传。 首先,解决中文乱码问题的关键在于配置正确的字符编码。在Struts的配置文件`struts-config.xml`中,你需要为...
在基于Struts2的项目中,文件上传是一个常见的需求,例如用户上传个人头像、上传文档等。同时,为了确保系统安全和性能,我们需要对上传的文件进行一些限制,比如限制文件类型和大小。本篇文章将详细介绍如何在...
在Struts2框架中,处理文件上传是一项常见且重要的功能,尤其当涉及到大文件上传时,往往会遇到上传文件大小超过预设限制的问题。这不仅影响用户体验,还可能导致应用程序出现异常或错误。本文将深入探讨如何解决...
在Struts框架中,文件上传功能是非常常见且实用的特性,尤其在处理用户需要上传图片、文档等数据时。然而,Struts的文件上传也存在一些安全风险,如著名的Struts2远程代码执行漏洞。接下来,我们将深入探讨Struts...
FormFile是Struts1用来处理上传文件的类,它可以获取文件名、内容类型、大小等信息。在这个例子中,使用了一个ArrayList来存储用户选择的所有文件: ```java public class BatchUploadForm extends ActionForm { ...