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

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

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

    隨筆-57  評(píng)論-117  文章-1  trackbacks-0

         我們都知道普通的文件上傳是通過表單進(jìn)行文件上傳的,還不能達(dá)到異步上傳的目的。通過使用某些技術(shù)手段,比如jquery form.js可以達(dá)到異步上傳的目的,但最重要的問題在于,它不能夠進(jìn)行多個(gè)文件的上傳。如果你要上傳多個(gè)文件,必須一個(gè)一個(gè)地上傳,同時(shí)還要在界面上處理當(dāng)上傳完一個(gè)文件之后,下一個(gè)文件上傳框的問題。
        現(xiàn)在我們有了一個(gè)更多的運(yùn)行,即使用swfupload進(jìn)行多文件異步上傳。顧名思義,它是一個(gè)flash的上傳工具,但在界面上的表現(xiàn)形式使它和普通的html元素一樣,沒有復(fù)雜的展現(xiàn),就一個(gè)普通的上傳框,即可達(dá)到想要目的。

        關(guān)于swfupload的使用這里自不必多,這里主要介紹的是解決在java web開發(fā)過程中經(jīng)常碰到的驗(yàn)證失敗的問題。這是因?yàn)閒lash在上傳的時(shí)候使用的是和瀏覽器不同的會(huì)話,flash的SWFUpload上傳利用socket套接字進(jìn)行通信,所以導(dǎo)致session和原來上一次的會(huì)話不同,導(dǎo)致session丟失。這樣就導(dǎo)致服務(wù)器在驗(yàn)證時(shí)自然被認(rèn)為是新會(huì)話,從而驗(yàn)證不能通過,導(dǎo)致上傳不能成功了。
        解決問題的方法,就是讓flash在上傳文件的時(shí)候帶上同在一個(gè)界面的session標(biāo)識(shí),這通常是修改其中的upload_url來達(dá)到我們的目的,修改如下所示:

    upload_url: "/admin/infobuild/image/upload.action;jsessionid=${pageContext.session.id }"

    上面這句話,必須放到j(luò)sp界面上,因?yàn)槔锩媸褂玫搅薐avaWeb的語(yǔ)法,當(dāng)然這可以修改,通過將<%=session.getId()%> 或 ${pageContext.session.id } 放到特殊的js變量中,可以達(dá)到隱藏變量的目的。比如如下的代碼:
    <!-- 這句要房子jsp頁(yè)面中的script腳本中,或是放在servlet的response.getWriter()流中的script腳本中;總之要在swfupload 的js引入之前執(zhí)行 -->
    window["sessionId"]="${pageContext.session.id}"; 
    <!-- 這句話就可以在引入的js中使用 -->
    upload_url: Gtip.util.addContextPath("/admin/infobuild/image/upload.action;jsessionId"  + "=" + window["sessionId"]),

    以上方案是解決在jsp頁(yè)面中解決的取值java的變量值;

    如上代碼的第一句放到j(luò)sp文件中,如jsp的公共include文件中。下面一句就放到j(luò)s文件中,如引入的upload.js文件當(dāng)中。
        但以上代碼還存在一個(gè)問題,就是默認(rèn)的sessionName問題。在tomcat或者其它j2ee容器,默認(rèn)的sessionName也是 jsessionId。如果我們修改了sessionName如通過tomcat的server.xml修改session_cookie_name,這樣默認(rèn)的sessionName就是我們修改之后的了。解決此問題,需要再加一個(gè)參數(shù)設(shè)置才可,如下所示:

     

    <!-- 這三行放在include 導(dǎo)入的那個(gè)jsp的頁(yè)面中 -->
    window["contextPath"] = "${pageContext.request.contextPath}";
    window["sessionId"] = "${pageContext.session.id}";
    window["sessionName"] = "jsessionId";
     
    // js中使用jsp中設(shè)置的window的變量值
    upload_url: addContextPath("/admin/infobuild/image/upload.action;" + window["sessionName"] + "=" + window["sessionId"])

    以上代碼的前三行放到公共的include.jsp中,最后一行放到公共的upload.js中。這樣即可滿足最終要求了。
    不過有一點(diǎn)不好的即是,在部署環(huán)境中時(shí),如果部署環(huán)境修改了sessionName,則必須在此include.jsp中修改一個(gè)具體的sessionName才可。

    轉(zhuǎn)載請(qǐng)標(biāo)明出處:i flym
    本文地址:http://www.iflym.com/index.php/code/201108190001.html



    作者:hoojo
    出處:
    blog:http://blog.csdn.net/IBM_hoojo
             http://hoojo.cnblogs.com
    本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。


    版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處 本文出自:
    分享道版權(quán)所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處,謝謝
    posted on 2012-05-11 14:14 hoojo 閱讀(2965) 評(píng)論(0)  編輯  收藏 所屬分類: Ajax【富客戶端技術(shù)】HTML/CSS 、JavaEE 、Jsp/Servlet
    主站蜘蛛池模板: 岛国精品一区免费视频在线观看| 97久久精品亚洲中文字幕无码| 国产美女无遮挡免费视频网站| 最近的免费中文字幕视频| 成人无码区免费A片视频WWW| **aaaaa毛片免费| **一级毛片免费完整视| 4399好看日本在线电影免费| 在线看片韩国免费人成视频| 免费国产作爱视频网站| 青青在线久青草免费观看| 久久久久久国产精品免费免费| 成人免费视频88| 国产真实伦在线视频免费观看| 麻豆国产入口在线观看免费| 国产区卡一卡二卡三乱码免费| 免费一级毛片清高播放| 国产亚洲精品看片在线观看| 国产日韩亚洲大尺度高清| 亚洲成人动漫在线| 亚洲人成在线中文字幕| 亚洲国产午夜精品理论片在线播放 | 国产桃色在线成免费视频| 四虎永久在线精品免费观看视频| 拨牐拨牐x8免费| 亚洲国产成人久久一区WWW| 成人亚洲性情网站WWW在线观看| 亚洲中文字幕无码中文字在线| 在线免费观看国产视频| 亚洲色偷拍区另类无码专区| 亚洲乱码无码永久不卡在线 | 亚洲av片一区二区三区| 亚洲日本一区二区三区在线| 亚洲国产天堂久久综合网站| 亚洲视频在线观看2018| 色吊丝免费观看网站| 少妇性饥渴无码A区免费| av大片在线无码免费| 免费国产a国产片高清| 亚洲激情在线视频| 亚洲色大成网站WWW国产|