Iframe中的非阻止文件上传

时间:2011-10-12 12:07:46

标签: javascript jquery upload nonblocking

我有一个按钮,当点击时会打开一个叠加层,它是iframe中的一个表单。有一个文件上传,我成功地使叠加层消失,并在提交时将父窗口重定向到另一个页面。问题出在这里:

如果用户上传了一个巨大的文件,则必须先将文件上传,然后才能重定向用户。是否有其他方式上传文件,同时关闭叠加层并重定向父窗口而不丢失文件上传?

亲切的问候,

3 个答案:

答案 0 :(得分:1)

对我来说,解决方案非常简单。不要使用iframe进行文件上传。只需将带有文件上载对话框的表单放入主页面即可。如果上载完成,则服务器可以将重定向发送回客户端,然后将用户重定向到新站点。 或者这种简单的解决方案有什么问题吗?

<强>更新 因为简单的解决方案无效,我建议另一种解决方案。向iframe添加onload事件侦听器。如果调用onload事件的事件处理程序(这意味着文件上载完成),则重定向用户。要重定向用户,您可以使用window.location.href = "your new url";但请注意,在iframe的文件格式完全加载后添加事件侦听器,或者您必须忽略第一个触发的事件(这将是加载的文件格式)你是事件处理程序。

答案 1 :(得分:0)

试试吧......

  1. 当表单提交完成(意味着文件已上传)在服务器端时,您需要设置会话标志,如$ _SESSION ['file_uploaded'] = TRUE;
  2. 在父窗口的step1之前,您需要编写一个ajax函数来检查会话。 js ajax函数在加载叠加(iframe)后不断联系服务器 当服务器返回true时,您可以隐藏叠加层,然后将页面重定向到其他位置。

答案 2 :(得分:0)

为此,我使用Valum的插件或jQuery form plugin

如果您坚持使用iframe文件上传,请参阅Valum's AJAX file upload的旧版本。要么使用他的包,要么看代码的灵感。不要被这个名字弄糊涂;它不使用AJAX,而是使用iframe进行文件上传。

请注意,newer version of Valum's plugin也可能使用AJAX。