Struts中使用commons-fileupload实现上传例子
来源:互联网 发布:数据库设计说明书模板 编辑:程序博客网 时间:2024/06/06 02:45
struts的DownloadAction使用后发现,当我提取中文名的文件时,会转换成乱码(弹出的对话框为乱码),可能还没有研究明白,所以考虑用smartupload和commons-fileupload。
使用smartupload上传过大文件,或者多文件的时候可能出现CPU或内存占用过高的问题.并且:只有重新启动容器才能恢复正常!后决定用用commons-fileupload.
下载:下载地址:http://jakarta.apache.org/site/downloads/downloads_commons-fileupload.cgi,包内包含了API文档.(还有commons-beanutils) 在项目中添加下载的组件。
注意事项:
1.不要在jsp页面中使用struts得标签,使用后,通过正常方式无法接收到相关参数。(不用<html:form>)
2.如果使用action,不要使action继承其他得action,仅仅继承org.apache.struts.action.Action;并且在配置文件中,不要给action配置actionForm,否则通过一下方法:
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(41943040);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(2048);
// 设置临时目录:
fu.setRepositoryPath(tempPath);
// 得到所有的文件:
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
接收到得list是null。不关联actionform即可正常使用。
例子:
一。创建defalut.jsp
<%@ page language="java" pageEncoding="gb2312"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<body>
This a struts page.
<br>
<form action="/abc/default.do" method="post" name="uploadform"
enctype="multipart/form-data">
<br>
文件1:
<input name="file1" size="40" type="file">
<br>
文件2:
<input name="file2" size="40" type="file">
<br>
<input name="upload" type="submit" value="开始上传" />
</form>
</body>
</html:html>
二。创建FormfileAction 继承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.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class FormfileAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DiskFileUpload fu = new DiskFileUpload();
// 设置最大文件尺寸,这里是4MB
fu.setSizeMax(41943040);
// 设置缓冲区大小,这里是4kb
fu.setSizeThreshold(4000);
// 设置临时目录:
fu.setRepositoryPath("c://temp//oo");
// 得到所有的文件:
List fileItems;
try {
fileItems = fu.parseRequest(request);
Iterator iter = fileItems.iterator();
while(iter.hasNext()){
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
System.out.println("file name:" +name);
System.out.println("file size:" +size);
name = name.replace(":","_");
name = name.replace("//","_");
try {
item.write(new File("F://"+ name));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("execute");
return null;
}
}
三。配置struts-config.xml:
<action
path="/default"
scope="request"
type="com.yourcompany.struts.action.FormfileAction" />
如有更好的方法,请赐教
- Struts中使用commons-fileupload实现上传例子
- Struts中使用commons-fileupload实现上传例子
- 使用commons-fileupload实现上传
- servlet中使用commons-fileupload实现图片上传
- 使用commons-fileupload上传简单实现
- 使用commons-fileupload实现文件上传
- 使用commons-fileupload实现文件上传
- 使用Commons-fileupload组件实现文件上传
- 使用Commons-fileupload组件实现文件上传
- JSP使用commons-fileupload实现文件上传
- Jsp 使用commons-fileupload实现文件上传
- 使用commons-fileupload组件实现文件上传
- 使用commons-fileupload实现文件的上传
- 使用Apache commons-fileupload实现文件上传
- Servlet使用commons-fileupload实现文件上传
- Struts实现文件上传(commons-fileupload.jar)
- 使用commons-fileupload.jar实现图片上传的一个小例子
- commons-fileupload 实现文件上传
- JAVA cookies用法
- java中session用法
- ASP.NET AJAX入门系列(2):使用ScriptManager控件
- LINUX下mysql5.0.27的安装
- asp.net中使用_dopostback函数
- Struts中使用commons-fileupload实现上传例子
- 用Servlet动态生成JPEG图像
- CNGNU Postfix邮件系统系列指南之一 Postfix + Cyrus-IMAP + Cyrus-SASL + MySQL + IMP
- MySQL 5.0.16 乱码问题处理办法
- ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一)
- 毕业设计有望提前完成
- ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二)
- 遇到的linux问题汇集
- 注册开源项目otak