<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里面聲明一個DynaActionForm,在做一個關聯的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");//編碼轉換
                }
     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");
            
        }

    }
    相關的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文件里面聲明了一個Set Character Encoding沒效果,不知道怎么回事,呆會晚上問下人看看是什么問題。

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


    ---------------------------------------------------------
    專注移動開發

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

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

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

    public FormFile getFile()
    {
    return (this.file);
    }
    在Action中獲取這個file就可以了,其它操作同上。  回復  更多評論
      
    主站蜘蛛池模板: 国产亚洲精品美女| 一个人看www在线高清免费看| 91精品免费高清在线| 亚洲精品无码久久毛片波多野吉衣| 最近免费中文字幕mv电影| 成人a毛片视频免费看| 亚洲风情亚Aⅴ在线发布| 毛茸茸bbw亚洲人| 免费无码VA一区二区三区| 亚洲免费无码在线| 亚洲在成人网在线看| 亚洲成AV人片在线播放无码| 亚洲国产精品专区在线观看| 免费的一级黄色片| 在线观看人成视频免费| 两性色午夜免费视频| 免费国产草莓视频在线观看黄| 亚洲Av永久无码精品黑人| 亚洲成av人影院| 亚洲国产精品无码久久久不卡 | 亚洲AV日韩AV永久无码免下载 | 亚洲一本综合久久| 亚洲精品成人网站在线观看| 99国产精品永久免费视频| 特黄特色大片免费| 亚洲成人免费电影| 亚洲精品国产电影午夜| 亚洲精品视频观看| 亚洲国产av一区二区三区丶| 在线亚洲精品自拍| 成年人视频在线观看免费| 拍拍拍又黄又爽无挡视频免费| 久久精品女人天堂AV免费观看| 国产免费福利体检区久久| 亚洲avav天堂av在线网爱情| 亚洲精品无码久久千人斩| 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲精品无码午夜福利中文字幕 | 羞羞视频免费网站日本| 青青草97国产精品免费观看 | 亚洲日韩国产成网在线观看|