漁人碼頭

          天行健,君子以自強(qiáng)不息。地勢(shì)坤,君子以厚德載物。
          posts - 12, comments - 16, trackbacks - 0, articles - 43
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Struts的文件上傳

          Posted on 2007-01-16 17:50 Fisher 閱讀(246) 評(píng)論(0)  編輯  收藏 所屬分類: Struts

          最近剛做完一個(gè)項(xiàng)目,用Struts1.1做的。從不懂,到熟練使用,都靠參考CSDN的一些文檔。但是文章上講的并不一定適合自己,所以我把我自己做的一些東西拿上來給大家看看,互相交流一下。如果您有跟好的方法,可以和我聯(lián)系。
          MSN:whw_dream (AT) hotmail.com

          Struts的文件上傳
          本文用的是Struts1.1的org.apache.struts.upload.FormFile類。很方便,不用自己寫。也不用寫一個(gè)jsp調(diào)用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("/");//取當(dāng)前系統(tǒng)路徑
          ????????? ByteArrayOutputStream baos = new ByteArrayOutputStream();
          ????????? OutputStream bos = new FileOutputStream(filePath + "/" +
          ????????????????????????????????????????????????? file.getFileName());//建立一個(gè)上傳文件的輸出流
          ????????? //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);//將文件寫入服務(wù)器
          ????????? }
          ????????? 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;

          ? }
          }
          //這是相對(duì)應(yīng)的form,還有其他屬性可以設(shè)置,具體可以參考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就是隨便寫一個(gè)成功頁-->



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=181207


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 三门峡市| 南召县| 张家川| 高州市| 南丹县| 台南县| 封丘县| 左贡县| 类乌齐县| 北海市| 永仁县| 工布江达县| 莱州市| 偃师市| 玉龙| 北票市| 古浪县| 腾冲县| 阳山县| 公安县| 区。| 五家渠市| 娄烦县| 卢龙县| 延长县| 汉川市| 朔州市| 来宾市| 广昌县| 吉木萨尔县| 黔江区| 太保市| 赣榆县| 石首市| 南充市| 米林县| 延津县| 乐亭县| 左云县| 库尔勒市| 德清县|