<html:file>标签核心语法
<html:file property="对应ActionForm中的属性名称" />
此标签中最重要的就是property属性,其中保存的是上传文件的具体内容,而如果要想接收此内容,则必须依靠org.apache.struts.upload.FormFile接口完成
此接口的常用方法
NO. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public byte[] getFileData() throws FileNotFoundException,IOException | 普通 | 取得上传文件的大小 |
2 | public InputStream getInputStream() throws FileNotFoundException,IOException | 普通 | 取得上传文件的输入流 |
3 | public int getFileSize() | 普通 | 取得上传文件的大小 |
4 | public String getFileName() | 普通 | 取得上传文件的名称 |
5 | public String getContentType() | 普通 | 取得上传文件的类型 |
定义表单----upload.jsp
<%@ page language="java" pageEncoding="GBK"%>
<%@ 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"%>
<html:html lang="true">
<head>
<html:base />
<title>hello.jsp</title>
</head>
<body>
<html:form action="upload.do" method="post" enctype="multipart/form-data">
请选择要上传的文件: <html:file property="photo"></html:file>
<html:submit value="上传"></html:submit>
</html:form>
</body>
</html:html>
定义ActionForm,接收上传文件----UploadForm.java
package org.lxh.struts.form;
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 FormFile photo ;
public FormFile getPhoto() {
return photo;
}
public void setPhoto(FormFile photo) {
this.photo = photo;
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
return null;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
}
}
定义Action----UploadAction.java
package org.lxh.struts.action;
import java.io.File;
import java.io.FileOutputStream;
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.lxh.struts.form.UploadForm;
import cn.mldn.lxh.util.IPTimeStamp;
public class UploadAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UploadForm uploadForm = (UploadForm) form;// TODO Auto-generated
// method stub
IPTimeStamp its = new IPTimeStamp(request.getRemoteAddr());
String fileName = its.getIPTimeRand()
+ "."
+ uploadForm.getPhoto().getFileName().split("\\.")[uploadForm
.getPhoto().getFileName().split("\\.").length - 1];
File outFile = new File(super.getServlet().getServletContext()
.getRealPath("/")
+ "upload" + File.separator + fileName);
System.out.println(fileName);
System.out.println(outFile);
try {
OutputStream output = new FileOutputStream(outFile);
InputStream input = uploadForm.getPhoto().getInputStream();
byte data[] = new byte[1024];
int temp = 0;
while ((temp = input.read(data)) != -1) {
output.write(data, 0, temp);
}
output.close();
} catch (Exception e) {
e.printStackTrace() ;
}
return null;
}
}
配置struts-config.xml
<struts-config>
<form-beans >
<form-bean name="uploadForm" type="org.lxh.struts.form.UploadForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="uploadForm"
input="/upload.jsp"
name="uploadForm"
path="/upload"
scope="request"
type="org.lxh.struts.action.UploadAction" />
</action-mappings>
<message-resources parameter="org.lxh.struts.ApplicationResources" />
</struts-config>