使用struts2实现上传,代码将更简单
上传页面upload.jsp,action类UploadAction.java
upload.jsp(上传多个文件)
<body>
<s:form action="upload" method="post" enctype="multipart/form-data">
<table align="center" width="60%" border="1">
<tr>
<td>
username
</td>
<td>
<s:textfield name="username" />
</td>
</tr>
<tr>
<td>
password
</td>
<td>
<s:password name="password"></s:password>
</td>
</tr>
<tr>
<td>
file
</td>
<td id="more">
<s:file name="file"></s:file>
<input type="button" value="add more..." οnclick="addmore()" />
</td>
</tr>
<tr>
<td colspan="2">
<s:submit></s:submit>
</td>
</tr>
</table>
</s:form>
</body>
UploadAction.java
public class UploadAction extends ActionSupport {
private String username;
private String password;
//上传多个文件,属性放入list中
private List<File> file;
//以下两属性对应struts jar包中类FileUploadInterceptor.class中(254行)
private List<String> fileFileName;
private List<String> fileContentType;
public String execute() throws Exception {
for (int i = 0; i < file.size(); i++) {
//上传文件传入输入流
InputStream is = new FileInputStream(file.get(i));
//指定上传路径
String root = ServletActionContext.getRequest().getRealPath(
"/upload");
File destFile = new File(root, this.getFileFileName().get(i));
OutputStream os = new FileOutputStream(destFile);
byte[] buffer = new byte[400];
int length = 0;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
is.close();
os.close();
}
return SUCCESS;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<File> getFile() {
return file;
}
public void setFile(List<File> file) {
this.file = file;
}
public List<String> getFileFileName() {
return fileFileName;
}
public void setFileFileName(List<String> fileFileName) {
this.fileFileName = fileFileName;
}
public List<String> getFileContentType() {
return fileContentType;
}
public void setFileContentType(List<String> fileContentType) {
this.fileContentType = fileContentType;
}
}
struts.xml
<action name="upload" class="com.test.action.UploadAction">
<result name="success">/upload/uploadresult.jsp</result>
<result name="input">/upload/upload.jsp</result>
</action>
uploadresult.jsp
<body>
username:<s:property value="username"/><br>
password:<s:property value="password"/><br>
file1:<s:property value="file"/><br>
</body>
接下来可以扩展,上传多个文件,判断文件格式和大小