在非html5的情况下,不能用ajax将文件推送到后端,只能通过表单形式提交。但是,表单提交后,浏览器会根据响应头和状态码呈现、下载或跳转当前页面。当返回文本、html、json等内容时,浏览器会呈现当前页面,相当于刷新。
所以,基本思路很简单。提交上传文件表单时,让浏览器转移到iframe处理响应信息,并在响应信息中嵌入一个js代码。这个js代码可以在当前页面上调用一个方法实现回调,类似于xss攻击。
此时我们需要使用表单的target属性,只需要使用iframename的值,它指的是iframe的name属性,意思是转移到iframe来处理响应信息。
我在这里使用jsp spring mvc实现,代码如下
JSP-demo.jsp上传文件
后端代码:
回调的JSP-uploadCallback.jsp注意:如果上传文件的页面不是顶层窗口,而是ifream,使用window.parent获取上传文件页面的window对象。
效果:
以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助,也希望多多支持我们!