JS異步文件上傳(兼容IE8+)


在非html5的情況下是無法用ajax把文件推送到后端的,只能通過form表單提交。但是form表單提交后瀏覽器會根據響應頭與狀態碼對當前頁面進行渲染、下載或跳轉等行為,返回text、html、json等類型的內容時瀏覽器會對當前頁面進行渲染,相當於刷新。
所以基本思路很簡單,提交上傳文件表單時,讓瀏覽器轉移到iframe處理響應信息,響應信息嵌入一段js代碼,這段js代碼調用當前頁面的一個方法就可以實現回調,類似於xss攻擊。
這時就要用到form表單的target屬性,我們這里只需要用到iframename的值,iframename指的是iframe的name屬性,意思是轉移到iframe處理響應信息。
我這里用的是jsp + spring mvc的實現,代碼如下
 
上傳文件的JSP->demo.jsp

 


 


 后端代碼:

 

 

回調的JSP->uploadCallback.jsp  注意: 如果上傳文件的頁面不是頂級窗口,而是一個ifream 就要使用window.parent取得上傳文件頁面的window對象

 

 效果:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM