JS異步文件上傳(兼容IE8+)
在非html5的情況下是無法用ajax把文件推送到后端的,只能通過form表單提交。但是form表單提交后瀏覽器會根據(jù)響應(yīng)頭與狀態(tài)碼對當(dāng)前頁面進行渲染、下載或跳轉(zhuǎn)等行為,返回text、html、json等類型的內(nèi)容時瀏覽器會對當(dāng)前頁面進行渲染,相當(dāng)于刷新。
所以基本思路很簡單,提交上傳文件表單時,讓瀏覽器轉(zhuǎn)移到iframe處理響應(yīng)信息,響應(yīng)信息嵌入一段js代碼,這段js代碼調(diào)用當(dāng)前頁面的一個方法就可以實現(xiàn)回調(diào),類似于xss攻擊。
這時就要用到form表單的target屬性,我們這里只需要用到iframename的值,iframename指的是iframe的name屬性,意思是轉(zhuǎn)移到iframe處理響應(yīng)信息。
我這里用的是jsp + spring mvc的實現(xiàn),代碼如下
上傳文件的JSP->demo.jsp
后端代碼:
回調(diào)的JSP->uploadCallback.jsp 注意: 如果上傳文件的頁面不是頂級窗口,而是一個ifream 就要使用window.parent取得上傳文件頁面的window對象
效果:
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
JavaScript——DOM操作——Window.document對象詳解
下面小編就為大家?guī)硪黄狫avaScript——DOM操作——Window.document對象詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07JS把內(nèi)容動態(tài)插入到DIV的實現(xiàn)方法
下面小編就為大家?guī)硪黄狫S把內(nèi)容動態(tài)插入到DIV的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07JavaScript數(shù)組排序小程序?qū)崿F(xiàn)解析
這篇文章主要介紹了JavaScript數(shù)組排序小程序?qū)崿F(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01關(guān)于Google發(fā)布的JavaScript代碼規(guī)范你要知道哪些
代碼規(guī)范并不是一種編寫正確JavaScript代碼的規(guī)則,而是為了保持源代碼編寫模式一致的一種選擇。這篇文章給大家介紹了關(guān)于Google發(fā)布的JavaScript代碼規(guī)范你要知道哪些,感興趣的朋友一起看看吧2018-04-04JavaScript中break、continue和return的用法區(qū)別實例分析
這篇文章主要介紹了JavaScript中break、continue和return的用法區(qū)別,結(jié)合實例形式詳細(xì)對比分析了JavaScript中break、continue和return的基本功能、使用方法、區(qū)別與操作注意事項,需要的朋友可以參考下2020-03-03