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

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


    ---------------------------------------------------------
    專注移動開發(fā)

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

    評論:
    # re: Struts中上傳文件的總結(jié) 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>
    在動態(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
    第一個問題,不可以使用DynaActionForm,得用靜態(tài)的form-bean。

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

    public FormFile getFile()
    {
    return (this.file);
    }
    在Action中獲取這個file就可以了,其它操作同上。  回復(fù)  更多評論
      
    主站蜘蛛池模板: 成人黄软件网18免费下载成人黄18免费视频 | 国产无人区码卡二卡三卡免费 | 亚洲人成电影在在线观看网色| 亚洲国产a级视频| 又粗又硬又黄又爽的免费视频 | 国产2021精品视频免费播放| 一级毛片免费观看不卡视频| 成人无码视频97免费| 香蕉国产在线观看免费| 美女裸体无遮挡免费视频网站| 亚洲成在人线aⅴ免费毛片| 中文字幕亚洲码在线| 亚洲日韩精品无码专区| 亚洲av无码偷拍在线观看| 中文字幕无码亚洲欧洲日韩| 亚洲黄色激情视频| 亚洲欧美日韩国产精品一区| 亚洲日韩精品国产一区二区三区| 亚洲精品亚洲人成在线| 亚洲heyzo专区无码综合| 国产亚洲成在线播放va| 一区二区三区免费看| 国产V片在线播放免费无码| 99久久成人国产精品免费| 国产麻豆一精品一AV一免费| 三年片在线观看免费大全电影| 四虎最新永久免费视频| 青青在线久青草免费观看| 午夜男人一级毛片免费| 成人免费无码精品国产电影| 亚洲AV无码乱码在线观看性色扶 | 无码av免费毛片一区二区| 四虎成人免费网址在线| 免费萌白酱国产一区二区| 久久久青草青青国产亚洲免观 | 久久精品国产精品亚洲人人| 亚洲精品无码久久久久去q| 亚洲第一页在线观看| 中文字幕无码精品亚洲资源网久久| 亚洲精品无码不卡在线播放| 午夜不卡AV免费|