在struts框架下實現文件的上傳 (轉)
由于jspsmartupload上傳文件,當前端頁面沒有file控件時,后端用jspsmartupload控件upload時將會走入一個死循環。現在采用struts自己提供的功能實現文件的上傳。
1、前端頁面upload.jsp
<html:form action="/filesave.do" styleId="formItem" method="post"? enctype="multipart/form-data">
<INPUT? class='input-file' type="file" name="theFile">
</html:form>
2、struts-config.xml文件配置
<form-bean name="UploadForm" type="yhp.test.web.UploadForm" />
<action input="/upload.jsp" name="UploadForm"?? path="/filesave" scope="request" type="yhp.test.web.UploadAction" validate="false">
????? <forward name="success" path="/success.jsp" />
????? <forward name="error" path="/error.jsp" />
??? </action>
3、UploadForm.java文件
package yhp.test.web;
import org.apache.struts.upload.FormFile;
import org.apache.struts.action.ActionForm;
public class UploadForm extends ActionForm {
? protected String theText;?? //使用protected?,其它需要上傳的form可以繼承此form
? protected boolean writeFile = true;
? protected FormFile theFile;
? protected String filePath;
? public String getTheText() {
??? return theText;
? }
? public void setTheText(String theText) {
??? this.theText = theText;
? }
? public FormFile getTheFile() {
??? return theFile;
? }
? public void setTheFile(FormFile theFile) {
??? this.theFile = theFile;
? }
? public void setWriteFile(boolean writeFile) {
??? this.writeFile = writeFile;
? }
? public boolean getWriteFile() {
??? return writeFile;
? }
? public void setFilePath(String filePath) {
??? this.filePath = filePath;
? }
? public String getFilePath() {
??? return filePath;
? }
? public void reset() {
??? writeFile = false;
? }
}
4、UploadAction.java文件
package yhp.test.web;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
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;
public class UploadAction extends Action {
? public ActionForward execute(ActionMapping actionMapping,
?????????????????????????????? ActionForm actionForm,
?????????????????????????????? HttpServletRequest httpServletRequest,
?????????????????????????????? HttpServletResponse httpServletResponse) throws
????? Exception {
??? if (actionForm instanceof UploadForm) {
????? // 獲取上傳的目錄
????? String path = getServlet().getServletContext().getInitParameter("UPLOADPATH");
????? File f = new File(path);
????? if (!f.isDirectory()) {
??????? f.mkdir();
????? }
????? UploadForm theForm = (UploadForm) actionForm;
????? String text = theForm.getTheText();
????? FormFile file = theForm.getTheFile();
????? String fileName = file.getFileName();
????? String contentType = file.getContentType();
????? boolean writeFile = theForm.getWriteFile();
????? String desFileName=path fileName ;
????? String size = (file.getFileSize() + " bytes");
????? try {
????????? InputStream stream = file.getInputStream();
?? OutputStream bos = new FileOutputStream(strFileName);?????????
????????? byte[] buffer = new byte[file.getFileSize()];
????????? stream.read(buffer);
????????? bos.write(buffer);
?? stream.close();?
????????? bos.close();
????????? return actionMapping.findForward("success");
????? }
????? catch (FileNotFoundException fnfe) {
????????? return actionMapping.findForward("success");
????? }
????? catch (IOException ioe) {
????????? return actionMapping.findForward("success");
????? }
????? catch(Exception eo){
????????? return actionMapping.findForward("error");
????? }?
??? }else{
????? return actionMapping.findForward("error");
??? }
? }
}
posted on 2006-05-23 18:03 liaojiyong 閱讀(520) 評論(0) 編輯 收藏 所屬分類: Struts