基于Struts FormFile上传文件
2011-01-21 19:31
411 查看
有关文件上传的控件可能非常多,比如有用于学习的SmartUpload、性能非常好的COS组件、有Apache的FileUpload组件、有Struts的FormFile组件、有Spring上传文件,还有其他一些开发的控件等等。假如你是用Struts,那基于Struts FormFile组件应该是一个不错的选择。
Struts FormFile跟Struts ActionForm结合得非常好,使用起来也非常简单,但是,对于同时上传多个附件,那就有点麻烦了!不管怎么样,它还是一个好东西,关键看大家怎么看待他了!
第一步,我们创建一个新的Struts工程,创建一个FileUploadForm,FileUploadForm如下所示:
程序代码
package zizz.struts;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class FileUploadForm extends ActionForm{
private static final long serialVersionUID = -7794872310588861856L;
private FormFile uploadFile;
public FormFile getUploadFile() {
return uploadFile;
}
public void setUploadFile(FormFile uploadFile) {
this.uploadFile = uploadFile;
}
}
第二步,创建一个Action,用于处理上传的文件及保存在服务器的路径,FileUploadAction文件内容如下
程序代码
package zizz.struts;
import java.io.FileOutputStream;
import java.io.IOException;
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 org.apache.struts.upload.FormFile;
public class FileUploadAction extends Action {
private static String UPLOAD_FILE_PATH = "c:/income/";
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
FileUploadForm uploadForm = (FileUploadForm)form;
//得到上传的文件
FormFile uploadFile = uploadForm.getUploadFile();
//得到文件名
String fileName = uploadFile.getFileName();
//得到文件大小
int fileSize = uploadFile.getFileSize();
System.out.println("FileName = " + fileName);
System.out.println("FileSize=" + fileSize);
boolean result = true;
try{
//得到文件的输入流
InputStream is = uploadFile.getInputStream();
//上传文件
uploadFile(fileName,is);
}catch(IOException ex){
ex.printStackTrace();
//假如上传文件失败,设置一个失败的标记位
result = false;
}
if(result){
return mapping.findForward("success");
} else {
return mapping.findForward("fail");
}
}
private void uploadFile(String fileName,InputStream is) throws IOException{
OutputStream os = new FileOutputStream(UPLOAD_FILE_PATH + fileName);
//8k缓存数据
byte[] buffer = new byte[1024 * 8];
//设置读进缓存的字节数
int len;
while((len=is.read(buffer))!=-1){
//将缓存数据写入磁盘
os.write(buffer,0,len);
}
//关闭输出流
os.close();
//关闭输入流
is.close();
}
}
第三步,编写文件上传的jsp文件
程序代码
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>文件上传表单</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">
</head>
<body>
<html:form action="/upload" enctype="multipart/form-data">
上传文件:<html:file property="uploadFile"></html:file>
<html:submit value="上传文件"></html:submit>
</html:form>
</body>
</html>
第四步,配置struts-config.xml文件
程序代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans>
<form-bean name="fileUploadForm" type="zizz.struts.FileUploadForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/upload" name="fileUploadForm" scope="request" type="zizz.struts.FileUploadAction">
<forward name="success" path="/success.jsp" redirect="true"></forward>
<forward name="fail" path="/fail.jsp" redirect="true"></forward>
</action>
</action-mappings>
<message-resources parameter="zizz.struts.ApplicationResources" />
</struts-config>
第五步,发布应用系统,检查测试结果
Struts FormFile跟Struts ActionForm结合得非常好,使用起来也非常简单,但是,对于同时上传多个附件,那就有点麻烦了!不管怎么样,它还是一个好东西,关键看大家怎么看待他了!
第一步,我们创建一个新的Struts工程,创建一个FileUploadForm,FileUploadForm如下所示:
程序代码
package zizz.struts;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class FileUploadForm extends ActionForm{
private static final long serialVersionUID = -7794872310588861856L;
private FormFile uploadFile;
public FormFile getUploadFile() {
return uploadFile;
}
public void setUploadFile(FormFile uploadFile) {
this.uploadFile = uploadFile;
}
}
第二步,创建一个Action,用于处理上传的文件及保存在服务器的路径,FileUploadAction文件内容如下
程序代码
package zizz.struts;
import java.io.FileOutputStream;
import java.io.IOException;
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 org.apache.struts.upload.FormFile;
public class FileUploadAction extends Action {
private static String UPLOAD_FILE_PATH = "c:/income/";
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
FileUploadForm uploadForm = (FileUploadForm)form;
//得到上传的文件
FormFile uploadFile = uploadForm.getUploadFile();
//得到文件名
String fileName = uploadFile.getFileName();
//得到文件大小
int fileSize = uploadFile.getFileSize();
System.out.println("FileName = " + fileName);
System.out.println("FileSize=" + fileSize);
boolean result = true;
try{
//得到文件的输入流
InputStream is = uploadFile.getInputStream();
//上传文件
uploadFile(fileName,is);
}catch(IOException ex){
ex.printStackTrace();
//假如上传文件失败,设置一个失败的标记位
result = false;
}
if(result){
return mapping.findForward("success");
} else {
return mapping.findForward("fail");
}
}
private void uploadFile(String fileName,InputStream is) throws IOException{
OutputStream os = new FileOutputStream(UPLOAD_FILE_PATH + fileName);
//8k缓存数据
byte[] buffer = new byte[1024 * 8];
//设置读进缓存的字节数
int len;
while((len=is.read(buffer))!=-1){
//将缓存数据写入磁盘
os.write(buffer,0,len);
}
//关闭输出流
os.close();
//关闭输入流
is.close();
}
}
第三步,编写文件上传的jsp文件
程序代码
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>文件上传表单</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">
</head>
<body>
<html:form action="/upload" enctype="multipart/form-data">
上传文件:<html:file property="uploadFile"></html:file>
<html:submit value="上传文件"></html:submit>
</html:form>
</body>
</html>
第四步,配置struts-config.xml文件
程序代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans>
<form-bean name="fileUploadForm" type="zizz.struts.FileUploadForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/upload" name="fileUploadForm" scope="request" type="zizz.struts.FileUploadAction">
<forward name="success" path="/success.jsp" redirect="true"></forward>
<forward name="fail" path="/fail.jsp" redirect="true"></forward>
</action>
</action-mappings>
<message-resources parameter="zizz.struts.ApplicationResources" />
</struts-config>
第五步,发布应用系统,检查测试结果
相关文章推荐
- 基于Struts文件上传(FormFile)详解
- 基于Struts FormFile上传文件
- 基于Struts FormFile上传文件—(转载于陈毓哲老师的博客)
- 基于struts 的FormFile实现文件的上传功能
- 基于struts 的FormFile实现文件的上传功能
- 基于Struts FormFile上传文件
- Struts FormFile 文件上传
- [转载][RFC文档]RFC1867 Form-based File Upload in Html(Html中基于表单的文件上传)
- 谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
- 谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
- 文件上传下载——通过struts的FormFile上传单个excel文件
- struts文件上传FormFile
- struts中post方式上传文件,enctype="multipart/form-data",request.getParameter("file") 是null的问题分析
- 利用struts的FormFile上传excel文件,并导入插入数据库
- 文件上传下载——通过struts的FormFile上传单个excel文件
- struts FormFile 上传文件
- 支持多文件上传,预览,拖拽,基于bootstrap的上传插件fileinput的ajax异步上传
- FormData上传文件MutilpartFile接收
- 基于Struts的文件上传
- xls上传,导入!!!!!利用struts的FormFile,并导入插入数据库