iFrame 无刷新文件上传

概述

要实现无刷新的二进制文件上传,可以使用FormData对象结合AJAX实现,但在低版本的IE是不支持的。为了要支持IE8,一种被广泛应用的技术就是 -- iFrame文件上传。

iFrame文件上传要点如下

  1. 在HTML文档有一个form表单
    form元素添加target属性,并等于iFrame元素的name值,同时form元素的action值为正确的URL,代码如下:
<form action=“handle.php” target=“#iframe-uploadFile” enctype="multipart/form-data">
</form>
  1. 在HTML文档中需要一个空的iFrame,代码如下:
<iframe name=“iframe-uploadFile” id=“iframe-uploadFile” style=“display:none”></iframe>
  1. 文件上传成功的返回
    因为文件是通过iframe上传的,返回结果也会在iframe中。返回一段JS,这段JS去回调一个文件上传成功的处理函数,返回结果如下:
<script type=text/javascript>
document.domain=“zhihu.com”;parent.ZH.i({“url”:1234: “http://pic3.zhimg.com/343905146f1b83c6fc74e5055be0e686.jpg”, “r”: 0, “id”: “343905146f1b83c6fc74e5055be0e686”, “handle_mode”: “upload”}); 
</script>

完整的功能流程

利用iframe的特性,使用iframe去提交表单的HTTP请求,并接收响应。iframe接收到的响应应当为一段JS代码,这段JS代码会被立即执行,它所做的事情就是去回调主文档的一个JS函数,这个函数开始iframe文件上传之后的工作。

Rod
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!