用到的類import org.apache.struts.upload.FormFile;
Jsp上傳頁面:
?
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
strutsUploadForm
</title>
</head>
<body bgcolor="#ffffff">
<h1>
上傳測試
</h1>
<form action="uploadTestAction.do" method="post" enctype="multipart/form-data" name="form1">
? <p>文本
??? <input name="theText" type="text" id="theText">
</p>
? <p>文件
??? <input name="theFile" type="file" id="theFile">
</p>
? <p>保存到
??? <input name="saveTo" type="text" id="saveTo">
</p>
? <p>
??? <input type="submit" name="Submit" value="提交">
</p>
</form>
</body>
</html>
?
?
actionForm
?
package hehe;
?
import org.apache.struts.action.*;
import javax.servlet.http.*;
import org.apache.struts.upload.FormFile;
?
public class UploadTestForm extends ActionForm {
? private String saveTo;
? private String theText;
? private org.apache.struts.upload.FormFile theFile;//文件框對應的是formFile類型
? public String getSaveTo() {
??? return saveTo;
? }
? public void setSaveTo(String saveTo) {
??? this.saveTo = saveTo;
? }
? public org.apache.struts.upload.FormFile getTheFile() {
??? return theFile;
? }
? public void setTheFile(org.apache.struts.upload.FormFile theFile) {
??? this.theFile = theFile;
? }
? public String getTheText() {
??? return theText;
? }
? public void setTheText(String theText) {
??? this.theText = theText;
? }
? public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
??? /**@todo: finish this method, this is just the skeleton.*/
??? if(!this.getTheFile().getContentType().equals("image/pjpeg")){
????? System.out.println("不是jpg");
??? }//可以判斷類型
??? if(this.getTheFile().getFileSize()>100){
????? System.out.println("長度大于1000");
??? }//可以判斷大小
??? return null;
? }
? public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {
??? saveTo = null;
??? theFile = null;
??? theText = null;
? }
}
?
?
Action
?
package hehe;
?
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import javax.servlet.http.*;
import java.io.*;
?
public class UploadTestAction
??? extends Action {
? public ActionForward execute(ActionMapping actionMapping,
?????????????????????????????? ActionForm actionForm,
?????????????????????????????? HttpServletRequest request,
?????????????????????????????? HttpServletResponse response) {
??? UploadTestForm uploadForm = (UploadTestForm) actionForm;
??? FormFile file = uploadForm.getTheFile();
??? String path = uploadForm.getSaveTo();
??? String theText = uploadForm.getTheText();
??? try {
????? InputStream input = file.getInputStream();//能從FormFile中獲得輸入流
????? OutputStream output = new FileOutputStream(path);
????? int bytesReader = 0;
????? byte[] readbuffer = new byte[8192];
????? while ( (bytesReader = input.read(readbuffer, 0, 8192)) != -1) {
??????? output.write(readbuffer, 0, bytesReader);
????? }
????? output.close();
??? }
??? catch (Exception e) {
????? e.printStackTrace();
??? }
??? request.setAttribute("theText", theText);
??? request.setAttribute("fileName", file.getFileName());//上傳的文件名
??? request.setAttribute("fileSize", new Integer(file.getFileSize()));//文件大小
??? request.setAttribute("fileType", file.getContentType());//文件類型
??? return actionMapping.findForward("success");
? }
}
?
?
結果頁面
?
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
strutsUploadResult
</title>
</head>
<body bgcolor="#ffffff">
<h1>
上傳結果
</h1>
文件名:<%=request.getAttribute("fileName")%><br />
文本:<%=request.getAttribute("theText")%><br />
文件類型:<%=request.getAttribute("fileType")%><br />
文件大?。?lt;%=request.getAttribute("fileSize")%><br />
</body>
</html>