Posted on 2007-01-16 17:50
Fisher 閱讀(238)
評論(0) 編輯 收藏 所屬分類:
Struts
最近剛做完一個項目,用Struts1.1做的。從不懂,到熟練使用,都靠參考CSDN的一些文檔。但是文章上講的并不一定適合自己,所以我把我自己做的一些東西拿上來給大家看看,互相交流一下。如果您有跟好的方法,可以和我聯系。
MSN:whw_dream (AT) hotmail.com
Struts的文件上傳
本文用的是Struts1.1的org.apache.struts.upload.FormFile類。很方便,不用自己寫。也不用寫一個jsp調用jspsmartupload就可以搞定。
選擇上傳文件頁面:selfile.jsp
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html:html>
<html:form action="/uploadsAction.do" enctype="multipart/form-data">
<html:file property="theFile"/>
<html:submit/>
</html:form>
</html:html>
UpLoadAction.java
import java.io.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
/**
?* <p>Title:UpLoadAction</p>
?* <p>Description: QRRSMMS </p>
?* <p>Copyright: Copyright (c) 2004 jiahansoft</p>
?* <p>Company: jiahansoft</p>
?* @author wanghw
?* @version 1.0
?*/
public class UpLoadAction extends Action {
? public ActionForward execute(ActionMapping mapping,
?????????????????????????????? ActionForm form,
?????????????????????????????? HttpServletRequest request,
?????????????????????????????? HttpServletResponse response)
????? throws Exception {
??? if (form instanceof uploadsForm) {//如果form是uploadsForm
??????? String encoding = request.getCharacterEncoding();
??????? if ((encoding != null) && (encoding.equalsIgnoreCase("utf-8")))
??????? {
??????????? response.setContentType("text/html; charset=gb2312");//如果沒有指定編碼,編碼格式為gb2312
??????? }
??????? UpLoadForm theForm = (UpLoadForm ) form;
??????? FormFile file = theForm.getTheFile();//取得上傳的文件
??????? try {
????????? InputStream stream = file.getInputStream();//把文件讀入
????????? String filePath = request.getRealPath("/");//取當前系統路徑
????????? ByteArrayOutputStream baos = new ByteArrayOutputStream();
????????? OutputStream bos = new FileOutputStream(filePath + "/" +
????????????????????????????????????????????????? file.getFileName());//建立一個上傳文件的輸出流
????????? //System.out.println(filePath+"/"+file.getFileName());
????????? int bytesRead = 0;
????????? byte[] buffer = new byte[8192];
????????? while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {
??????????? bos.write(buffer, 0, bytesRead);//將文件寫入服務器
????????? }
????????? bos.close();
????????? stream.close();
??????? }catch(Exception e){
????????? System.err.print(e);
??????? }
??????? //request.setAttribute("dat",file.getFileName());
??????? return mapping.findForward("display");
??? }
??? return null;
? }
}
UpLoadForm.java
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.*;
import org.apache.struts.upload.*;
/**
?* <p>Title:UpLoadForm</p>
?* <p>Description: QRRSMMS </p>
?* <p>Copyright: Copyright (c) 2004 jiahansoft</p>
?* <p>Company: jiahansoft</p>
?* @author wanghw
?* @version 1.0
?*/
public class UpLoadForm extends ActionForm {
? public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED = "org.apache.struts.webapp.upload.MaxLengthExceeded";
? protected FormFile theFile;
? public FormFile getTheFile() {
????? return theFile;
? }
? public void setTheFile(FormFile theFile) {
????? this.theFile = theFile;
? }
? public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
? {
????? ActionErrors errors = null;
????? //has the maximum length been exceeded?
????? Boolean maxLengthExceeded = (Boolean)
????????????? request.getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);
????? if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue()))
????? {
????????? errors = new ActionErrors();
????????? errors.add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED, new ActionError("maxLengthExceeded"));
????? }
????? return errors;
? }
}
//這是相對應的form,還有其他屬性可以設置,具體可以參考struts的上傳例子。
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "
<struts-config>
? <form-beans>
??? <form-bean name="uploadsForm" type="UpLoadForm" />
? </form-beans>
? <action-mappings>
??? <action name="uploadsForm" type="UpLoadAction" path="/uploadsAction">
????? <forward name="display" path="/display.jsp" />
??? </action>
? </action-mappings>
</struts-config>
<!--display.jsp就是隨便寫一個成功頁-->
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=181207