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

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

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

    隨筆-348  評(píng)論-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沒(méi)效果,不知道怎么回事,呆會(huì)晚上問(wèn)下人看看是什么問(wèn)題。

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


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

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

    評(píng)論:
    # re: Struts中上傳文件的總結(jié) 2007-05-18 18:25 | windows
    問(wèn)樓主個(gè)問(wèn)題:JSP頁(yè)面中有:
    <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ù)  更多評(píng)論
      
    # re: Struts中上傳文件的總結(jié) 2007-05-18 22:44 | TiGERTiAN
    第一個(gè)問(wèn)題,不可以使用DynaActionForm,得用靜態(tài)的form-bean。

    第二個(gè)問(wèn)題,靜態(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ù)  更多評(píng)論
      
    主站蜘蛛池模板: 免费一级毛片在播放视频| 国产成人精品亚洲精品| 日韩人妻无码精品久久免费一| 婷婷亚洲久悠悠色悠在线播放| 少妇人妻偷人精品免费视频| 亚洲精品精华液一区二区| 无码欧精品亚洲日韩一区夜夜嗨 | 久久久久免费精品国产小说| 亚洲精品无码专区在线播放| 久久91亚洲人成电影网站| 成人性生免费视频| 国产一级婬片A视频免费观看| 亚洲色无码专区一区| 亚洲精品你懂的在线观看| 精品国产免费观看久久久| 午夜老司机永久免费看片| 一级毛片a免费播放王色电影| 亚洲熟女www一区二区三区| 久久久久亚洲AV成人无码| 中文字幕在线亚洲精品| 亚洲国产综合久久天堂| 啦啦啦www免费视频| 97人妻无码一区二区精品免费| 国产精品区免费视频| 中国精品一级毛片免费播放| 四虎影视在线看免费观看| 国产精品亚洲一区二区三区久久| 亚洲午夜电影一区二区三区| 中文字幕亚洲综合精品一区| 亚洲乱码日产一区三区| 亚洲午夜爱爱香蕉片| 亚洲伊人成无码综合网| 亚洲综合伊人久久大杳蕉| 亚洲午夜无码久久久久| 曰韩亚洲av人人夜夜澡人人爽 | 色窝窝亚洲AV网在线观看| 免费无毒a网站在线观看| jizz免费观看| 97在线免费视频| 免费A级毛片无码A∨| 亚洲成人免费电影|