<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-348  評論-598  文章-0  trackbacks-0

    先在struts-config.xml里面聲明一個(gè)DynaActionForm,在做一個(gè)關(guān)聯(lián)的Action

          <form-bean name="uploadForm" type="org.apache.struts.action.DynaActionForm" dynamic="true">
            
    <form-property name="filename" type="java.lang.String"/> 
            
    <form-property name="uploadfile" type="org.apache.struts.upload.FormFile"/> 
          
    </form-bean>
         
    <action
             
    attribute="uploadForm"
             input
    ="/form/upload.jsp"
             name
    ="uploadForm"
             path
    ="/upload"
             scope
    ="request"
             type
    ="com.gcoresoft.struts.action.UploadAction"
             
    />
    Action代碼如下
    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     
    */

    package com.gcoresoft.struts.action;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    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.action.DynaActionForm;
    import org.apache.struts.upload.FormFile;


    /** 
     * MyEclipse Struts
     * Creation date: 05-12-2007
     * 
     * XDoclet definition:
     * @struts.action path="/upload" name="Form" attribute="uploadForm" input="/form/upload.jsp" scope="request" validate="true"
     
    */

    public class UploadAction extends Action {
        
    private static final Log log = LogFactory.getLog(UploadAction.class);
        
    /*
         * Generated Methods
         
    */


        
    /** 
         * Method execute
         * 
    @param mapping
         * 
    @param form
         * 
    @param request
         * 
    @param response
         * 
    @return ActionForward
         
    */

        
    public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) 
    {
            DynaActionForm uploadForm 
    = (DynaActionForm) form;// TODO Auto-generated method stub
            String filename=((String)uploadForm.get("filename")).trim();
            FormFile file
    =(FormFile)uploadForm.get("uploadfile");
            
    if(filename.equals("")||filename==null
            
    {
                filename
    =file.getFileName();
                
    try {
                    filename
    =new String(filename.getBytes("GBK"),"UTF-8");//編碼轉(zhuǎn)換
                }
     catch (UnsupportedEncodingException e) {
                    
    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }


            log.debug(
    "Filename:"+filename);
            String filepath
    ="e:\\temp\\";
            log.debug(
    "Realpath:"+filepath);
            
    try {
                InputStream in
    =file.getInputStream();
                OutputStream out
    =new FileOutputStream(filepath+filename);
                
    byte[] buffer=new byte[20000];
                
    int n=0;
                
    while((n=in.read(buffer))!=-1)
                
    {
                    out.write(buffer, 
    0, n);
                }
        
                out.close();
                in.close();
                log.debug(
    "Upload Successfully");
                
    return mapping.findForward("success");
            }
     catch (FileNotFoundException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
     catch (IOException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }

            
    return mapping.findForward("failure");
            
        }

    }
    相關(guān)的jsp文件
    <%@ page language="java" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
     
    <html> 
        
    <head>
            
    <title>JSP for DynaActionForm form</title>
        
    </head>
        
    <body>
            
    <html:form action="/upload" enctype = "multipart/form-data">
                filename : 
    <html:text property="filename"/><html:errors property="filename"/><br/>
                uploadfile : 
    <html:file property="uploadfile"/><html:errors property="uploadfile"/><br/>
                
    <html:submit/><html:cancel/>
            
    </html:form>
        
    </body>
    </html>

    這樣基本就可以了。
    還有就是在web.xml文件里面聲明了一個(gè)Set Character Encoding沒效果,不知道怎么回事,呆會(huì)晚上問下人看看是什么問題。

    這幾天查了很多資料都無法解決那個(gè)問題,很多都提示需要修改源代碼,沒辦法,先拿這個(gè)湊合下吧。
    在網(wǎng)上還找到一個(gè)方法就是將struts升級到1.2,formfile在1.2中解決了中文亂碼這個(gè)問題,所以我直接升級到了1.2問題解決。
    老bean那里也有一個(gè)方法,就是使用Jakarta 文件上傳類,詳細(xì)資料請參考:
    http://m.tkk7.com/beansoft/archive/2007/01/05/92087.html


    ---------------------------------------------------------
    專注移動(dòng)開發(fā)

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2007-05-12 17:20 TiGERTiAN 閱讀(1470) 評論(2)  編輯  收藏 所屬分類: Java

    評論:
    # re: Struts中上傳文件的總結(jié) 2007-05-18 18:25 | windows
    問樓主個(gè)問題:JSP頁面中有:
    <html:select property="testForm" size="2">
    <html:option value="1">test1</html:option>
    <html:option value="2">test2</html:option>
    </html:select>
    在動(dòng)態(tài)DynaActionForm中可否設(shè)置相關(guān)參數(shù)啊?
    如不能的話如何解決呢?用靜態(tài)FORM嗎?那在靜態(tài)FORM里如何解決org.apache.struts.upload.FormFile呢?
    多謝!
      回復(fù)  更多評論
      
    # re: Struts中上傳文件的總結(jié) 2007-05-18 22:44 | TiGERTiAN
    第一個(gè)問題,不可以使用DynaActionForm,得用靜態(tài)的form-bean。

    第二個(gè)問題,靜態(tài)的form-bean中,在相應(yīng)的form類中添加一個(gè)FormFile變量就可以了,和其他表單項(xiàng)目的獲取一樣。
    private FormFile file;
    public void setFile(FormFile file)
    {
    this.file=file;
    }

    public FormFile getFile()
    {
    return (this.file);
    }
    在Action中獲取這個(gè)file就可以了,其它操作同上。  回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲av无码成人精品区在线播放| 成人免费ā片在线观看| 亚洲天堂2017无码中文| 亚洲成A∨人片在线观看无码| 久久99亚洲网美利坚合众国| 亚洲欧洲国产精品你懂的| 亚洲国产a∨无码中文777| 亚洲国产精品SSS在线观看AV| 亚洲熟妇中文字幕五十中出| 亚洲乱亚洲乱妇无码麻豆| 亚洲啪啪AV无码片| 亚洲AV无码成人精品区蜜桃| 久久亚洲精品AB无码播放| 亚洲国产精品久久久久婷婷软件| 久久久久亚洲av无码专区蜜芽| 亚洲Av熟妇高潮30p| 色噜噜综合亚洲av中文无码| 久久亚洲熟女cc98cm| 亚洲精品中文字幕无码AV| 亚洲国产精品综合久久20| 亚洲日韩久久综合中文字幕| 爱情岛亚洲论坛在线观看| 一级毛片在线完整免费观看| a级毛片黄免费a级毛片| 99热在线免费观看| 永久免费AV无码国产网站| 日本无吗免费一二区| 亚洲日本va午夜中文字幕久久| 国产亚洲人成网站在线观看| 亚洲av无码成人黄网站在线观看| 亚洲黄色免费在线观看| 中文有码亚洲制服av片| 牛牛在线精品观看免费正| 免费一区二区无码东京热| 在线a免费观看最新网站| 成年性羞羞视频免费观看无限| 四虎免费永久在线播放| 亚洲尤码不卡AV麻豆| 亚洲综合小说久久另类区| 亚洲丰满熟女一区二区哦| 精品一区二区三区免费观看|