您的位置:首页 > 编程语言 > Java开发

基于struts 的FormFile实现文件的上传功能

2009-11-11 20:32 746 查看
第一步:首先建个上传文件的简单的界面,代码如下:文件名(FileUpload.jsp)


<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
<mce:script type="text/javascript"><!--
function apply(){
var f=document.getElementById("form1");
var file=document.getElementById("file");
if(file.value!=''){
f.submit();
}else{
alert('请选择要上传的文件');
return false;
}

}
// --></mce:script>
</head>
<body>
<form id="form1" action="/FileUpload.do" method="post" enctype="multipart/form-data">
<table align="center">
<tr><td>
<input type="file" id="uploadFile" name="uploadFile" size="12" value=" "> <p> </td>
</tr>
<tr><td>
<input onclick="apply();return false;" type="submit" value="上传文件"></td>
</tr>
</table>
</form>
</body>
</html>


第二步:建立一个ActionForm,代码如下:文件名(FileUploadForm.java)

]package com.form;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
public class FileUploadForm extends ActionForm {
private FormFile uploadFile;
public FormFile getUploadFile() {
return uploadFile;
}
public void setUploadFile(FormFile uploadFile) {
this.uploadFile = uploadFile;
}
}


第三步:创建Action,代码如下,文件名(FileUploadAction)

]package com.action;
import java.io.FileNotFoundException;
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;
import com.form.FileUploadForm;
public class FileUploadAction extends Action {
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();
//得到文件的输入流
InputStream is=uploadFile.getInputStream();
uploadFile(fileName,is);
return mapping.findForward("index");
}
/**
* 上传文件
* @param fileName
* @param is
*/
private void uploadFile(String fileName, InputStream is) {

try {
//设置上传文件要保存的路径
OutputStream os=new FileOutputStream("E:/save/"+fileName);
//设置一个Buffer用来缓存数据
byte[] buffer=new byte[1024*1024];
int len;
while((len=is.read(buffer))!=-1){
//将缓存的数据写到磁盘
os.write(buffer,0,len);
}
//关闭流
os.close();
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


第四步:写strust的配置文件struts-config.xml,代码如下:

]<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="upload" type="com.form.FileUploadForm" />
</form-beans>
<action-mappings>
<action path="/FileUpload" type="com.action.FileUploadAction" name="upload" />
</action-mappings>
<controller      processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
<message-resources parameter="resources.application" />


经过以上四步,开始运行,要是上传的文件名是中文会报异常的,为此加上过滤器。


第五步:加上过滤器:代码如下:


在web.xml中加上下面的代码


]<filter>
<filter-name>GlobalFilter</filter-name>
<filter-class>com.filter.GlobalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>GlobalFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


com.filter.GlobalFilter代码如下:


]package com.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class GlobalFilter implements Filter{

public void init(FilterConfig filterConfig) throws ServletException{
System.out.println("===========in the filter==========");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException{
try{
request.setCharacterEncoding("UTF-8");
chain.doFilter(request,response);
}catch(Exception e){
e.printStackTrace();
}
}
public void destroy() {
}
}


经过以上的五步,文件的上传功能就实现了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: