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

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

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

    JunXiu

    flex Httpservice java 傳參數(shù) 上傳文件 接收參數(shù)

    上傳參數(shù):httpservice封裝了 urlrequest
    上傳文件:所有上傳都是用POST  Content type為:multipart/form-data (如同html表單的設(shè)置一樣)

    var request:URLRequest=new URLRequest("http://localhost:8080/webproject12/servlet/upload");
    myFileRef.upload(request);

    可以加一個(gè)filter class  當(dāng)提交成功時(shí)候 綁定一個(gè)變量到session
    filter過(guò)濾所有要訪問(wèn)JSP生成XML的請(qǐng)求 如果session沒(méi)有這個(gè)變量  拒絕訪問(wèn)(方式根據(jù)鏈接訪問(wèn)JSP)
    提交文件用import flash.net.FileReference;

    MXML部分:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
    <mx:Script>
        <![CDATA[
        /**
        * 一個(gè)HttpService 與servlet通信的例子
        * 發(fā)送文件 和上傳表單  先文件上傳成功后繼續(xù)傳送表單
        * 發(fā)送文件的成功由事件監(jiān)聽(tīng) 
        * 發(fā)送表單后會(huì)返回由JSP生成的動(dòng)態(tài)XML文件
        * */
        import mx.rpc.events.FaultEvent;
        import mx.rpc.events.ResultEvent;
        import flash.net.URLRequest;
        import flash.net.FileReference;
        import flash.events.Event;
        import flash.events.IOErrorEvent;
     
       
            private var myFileRef:FileReference=null ;
            private var request:URLRequest=null;
            private function doFileBrowse():void{//點(diǎn)擊瀏覽文件選項(xiàng)
           
                       myFileRef = new FileReference();           
                    myFileRef.addEventListener(Event.SELECT,doSelect);
                    myFileRef.browse();   
            }
            private function doSelect(evt:Event):void{//為文件文本框賦值
                imageName.text=myFileRef.name.toString();
            }
            private function doUpForm():void{//點(diǎn)擊最后提交按鈕

                request=new URLRequest("http://localhost:8080/webproject12/servlet/upload");
                myFileRef.upload(request); //圖片文件的提交
                   myFileRef.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);//文件失敗上傳監(jiān)聽(tīng)事件
                myFileRef.addEventListener(Event.COMPLETE,doFileUploadComplete);//文件成功上傳監(jiān)聽(tīng)事件   
            }
            private function errorHandler(evt:IOErrorEvent):void{
                    trace("上傳失敗,檢查網(wǎng)絡(luò)");
            }
            private function doFileUploadComplete(evt:Event):void{
                    trace("文件上傳成功 繼續(xù)傳送表單");
                    up.send();//繼續(xù)提交文字表單
             
            }
           
            private function doResult(event:ResultEvent):void{
                trace(event.result);
            }
            private function doFault(event:FaultEvent):void{
                     trace("表單發(fā)送失敗");
            }
        ]]>
    </mx:Script>

        <mx:HTTPService id="up" url="http://localhost:8080/webproject12/flextest"
             result="doResult(event)" fault="doFault(event)"
              method="POST" resultFormat="xml" >
            <mx:request xmlns="">
            <username>
                {username.text}
            </username>
            <imageName>
                {imageName.text}
            </imageName>
            </mx:request>
        </mx:HTTPService>
        <mx:VBox height="100%" width="100%">
            <mx:Form>
                <mx:FormHeading label=" test load"/>
                <mx:FormItem label=" username:">
                    <mx:TextInput id="username"/>
                </mx:FormItem>
                <mx:FormItem label="Image Name" direction="horizontal">
                    <mx:TextInput id="imageName" editable="false"/>
                    <mx:Button click="doFileBrowse()" label="Browse"/>
                </mx:FormItem>
                <mx:FormItem>
                    <mx:Button label="提交" click="doUpForm()"/>
                </mx:FormItem>
            </mx:Form>
        </mx:VBox>   
    </mx:Application>

    servlet部分:
    upload。java   不需要回饋 文件接收器
    1.
    要設(shè)置好初始化參數(shù)  給與一個(gè)上傳附件的路徑
    通過(guò):
    private ServletContext sc =config.getServletContext();
    sc.getRealPath("/");得到應(yīng)用真是根目錄
    private String savePath = config.getInitParameter("savePath");// 保存文件夾

    sc.getRealPath("/")+savePath 是保存目錄

    2.
    用了COMMONS FILEUPLOAD組件 和commons IO 組件

    package org.zizi.servlet;

    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Iterator;
    import java.util.List;

    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;

    public class UploadServelt extends HttpServlet {

        private static final long serialVersionUID = -850828778548588525L;
        private ServletContext sc;// application 上傳組件要用
        private String savePath;// 保存路徑

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request, response);

        }

        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            // 開(kāi)始組建的使用
            DiskFileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);

            try {
                List list = upload.parseRequest(request);// 解析傳過(guò)來(lái)的內(nèi)容 返回LIST
                Iterator it = list.iterator();// 對(duì)LIST進(jìn)行枚舉
                while (it.hasNext()) {
                    FileItem item = (FileItem) it.next();
                    // 判斷是文本信息還是對(duì)象(文件)
                    if (item.isFormField()) {
                        // 如果是文本信息返回TRUE
                        System.out.println("參數(shù)" + item.getFieldName() + ":"
                                + item.getString("UTF-8"));
                        // 注意輸出值的時(shí)候要注意加上編碼
                    } else {
                        if (item.getName() != null && !item.getName().equals("")) {
                            System.out.println("上傳文件的大小:" + item.getSize());
                            System.out.println("上傳文件的類(lèi)型:" + item.getContentType());
                            System.out.println("上傳文件的名稱(chēng):" + item.getName());
                            System.out.println(sc.getRealPath("/") + savePath);
                            // 保存在服務(wù)器硬盤(pán)中
                            File tempFile = new File(item.getName());// 臨時(shí)FILE對(duì)象
                            // 此時(shí)有路徑的名字
                            // TEMPFILE主要為了獲取文件的單純文件名
                            File file = new File(sc.getRealPath("/") + savePath,
                                    "kdj"+(tempFile.getName()).substring((tempFile.getName()).length()-4,(tempFile.getName()).length()));
                            //在這里可以更改名字   
                            //用subString 的方法截取后綴 就可以加上自定義名稱(chēng)放在第二個(gè)參數(shù)
                            // 這個(gè)FILE是真正要保存的文件
                            item.write(file);// 寫(xiě)入服務(wù)器

                            // 返回結(jié)果
                            request.setAttribute("upload.message", "上傳成功");
                        } else {

                            request.setAttribute("upload.message", "沒(méi)有選擇上傳文件");
                        }
                    }
                }
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                request.setAttribute("upload.message", "上傳沒(méi)成功");
            }
           
            request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);

        }

        public void init(ServletConfig config) {
    //實(shí)現(xiàn)初始化文件   獲取初始化參數(shù) 路徑   和獲取 一個(gè)全局服務(wù)器對(duì)象 備用
            savePath = config.getInitParameter("savePath");// 初始化綁定參數(shù) 表明保存在哪
            sc = config.getServletContext();

        }

    }

    接收表單的servlet:flextest。java
    package org.zizi.test;

    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    public class FLEXTest extends HttpServlet {


        private static final long serialVersionUID = -154781975203117748L;

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {

       
        }


        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {

            response.setContentType("text/html;charset=utf-8");
            request.setCharacterEncoding("utf-8");
            String n=request.getParameter("username");
            String m=request.getParameter("imageName");
            request.setAttribute("pupload.message1", n);
            request.setAttribute("pupload.message2", m);
            request.getRequestDispatcher("/uploadResult2.jsp").forward(request, response);
    //FLEX會(huì)接收 這個(gè)轉(zhuǎn)向的JSP頁(yè)面動(dòng)態(tài)生成的XML文件

        }

    }


    web。xml
      <servlet>
        <servlet-name>UploadServelt</servlet-name>
        <servlet-class>org.zizi.servlet.UploadServelt</servlet-class>
        <init-param>
        <param-name>savePath</param-name>
        <param-value>uploads</param-value>
        </init-param>
      </servlet>
      <servlet>
        <servlet-name>SendMailServlet</servlet-name>
        <servlet-class>org.zizi.sendMail.SendMailServlet</servlet-class>
      </servlet>

    uploadResult2.jsp
    <%@page language="java"  contentType="text/xml;charset=utf-8" pageEncoding="UTF-8"%><?xml version="1.0" encoding="utf-8"?>
    <cat>
        <dog name="${requestScope['pupload.message2']}">
        </dog>
        <dog name="${requestScope['pupload.message1']}">
        </dog>
    </cat>


    結(jié)果:
    servlet 輸出:
    參數(shù)Filename:安博之淚.jpg
    上傳文件的大小:124849
    上傳文件的類(lèi)型:application/octet-stream
    上傳文件的名稱(chēng):安博之淚.jpg
    E:\tomcat6\webapps\webproject12\uploads
    參數(shù)Upload:Submit Query

    flex 輸出:
    [SWF] E:\workspaceforFlex\forwritingshop\bin-debug\test.swf - 926,895 bytes after decompression
    文件上傳成功 繼續(xù)傳送表單
    <cat><dog name="39254E3A-CC97-4FFE-8051-D152BF2A9E1F.jpg" /><dog name="zizi" /></cat>



    總結(jié),完全可以全部傳送去一個(gè)SERVLET----UPLOAD,但是需要保存request的參數(shù)  可以建一個(gè)HashMap<String,String>(),然后保存參數(shù)。備以后存入數(shù)據(jù)庫(kù)使用。

    但是,需要調(diào)用兩次servlet。。。。因?yàn)镠ttpservice的contenttype沒(méi)有MULtiple/form-data。。。。??

    posted on 2010-08-17 14:39 junlin 閱讀(3096) 評(píng)論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    <2010年8月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆分類(lèi)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲女久久久噜噜噜熟女| 久久青青草原亚洲AV无码麻豆| 人与动性xxxxx免费| 久久夜色精品国产亚洲AV动态图 | 国产高清不卡免费视频| 亚洲免费观看在线视频| 亚洲精品一级无码鲁丝片| 最好看的中文字幕2019免费| 亚洲精品乱码久久久久久蜜桃图片| 亚洲天堂中文字幕在线| 999久久久免费精品国产| 一级毛片试看60分钟免费播放| 亚洲视频在线不卡| 亚洲一区二区三区无码影院| 国内精品免费麻豆网站91麻豆| 九九久久精品国产免费看小说| ww亚洲ww在线观看国产| 久久精品国产亚洲麻豆| 国产精品色午夜视频免费看| 91精品国产免费| 国产高清对白在线观看免费91 | 亚洲人成精品久久久久| 成人黄页网站免费观看大全| 成人A片产无码免费视频在线观看| 亚洲综合色一区二区三区| 亚洲成AV人片天堂网无码| 免费国产成人午夜私人影视| 在线视频免费观看爽爽爽| 丝瓜app免费下载网址进入ios| 亚洲精品天堂成人片AV在线播放 | 男女一进一出抽搐免费视频 | 免费大黄网站在线观| 在线观看免费人成视频色| 一级毛片在线免费观看| 尤物视频在线免费观看| 久久精品国产亚洲av瑜伽| 色婷五月综激情亚洲综合| 亚洲邪恶天堂影院在线观看| 亚洲香蕉网久久综合影视| 四虎国产精品免费视| 韩国二级毛片免费播放|