上传页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ 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>
<html:base />
<title>index.jsp</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>
<br>
<html:form action="/upload" method="post" focus="Username"
enctype="multipart/form-data">
<table border="0">
<tr>
<td>
用户名:
<br>
</td>
<td>
<html:text property="username" />
<br>
</td>
</tr>
<tr>
<td>
上传文件:
<br>
</td>
<td>
<html:file property="filename"></html:file>
<br>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<html:submit />
<br>
</td>
</tr>
</table>
</html:form>
</body>
</html:html>
form
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
public class UploadForm extends ActionForm {
private static final long serialVersionUID = 1L;
private String username;
private FormFile filename;
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
return null;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public FormFile getFilename() {
return filename;
}
public void setFilename(FormFile filename) {
this.filename = filename;
}
}
action
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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.strutsFileupload.struts.form.UploadForm;
//使用struts上传文件
public class UploadAction extends Action {
@SuppressWarnings( { "unchecked", "deprecation" })
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UploadForm uploadForm = (UploadForm) form;
//第一步:
FormFile formFile = uploadForm.getFilename();
//看看两者的路径时候相同...选择用哪个?---测试过,用第一个更好!
System.out.println(this.getServlet().getServletContext().getRealPath("upload"));
System.out.println(request.getRealPath("upload"));
File file = new File(request.getRealPath("upload"));
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file + "/" + formFile.getFileName());
//考虑是写一个恒定的byte[]更好(如果很大就成问题了)
byte[] data = new byte[formFile.getFileSize()];
data = formFile.getFileData();//第二步:
fos.write(data);//第三步:
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return mapping.findForward("success");
}
}