2012-09-17 77 views
0

我正在使用href链接从服务器下载文件。我想在文件从服务器上完全下载后做一些活动。像XMLHTTP一样,我可以在href上设置一些回调函数,在完成请求时会调用它。获取请求状态

我的代码是这样的

///link to download report 
<div class='report-download'><a href='' id='downloadreq'></a></div> 
$("#report-download").click(OnClick); 

///onlick function 
functon OnClick() 
{ 
    ///start progress bar 
    $("#downloadreq").attr("href","8001.html?data=dowloadreport"); 
    //stop progress bar 

} 

我想说明,同时下载一个发生的进度条,我有一些代码开始,当我插入代码停止进度条停止进度条窗口。但是,在实际下载完成之前执行它并且进度条消失。我将如何确定报告下载已完成(或)是否可以确定下载已完成。下载报告的时间将取决于下载记录的数量。所以我不能等待默认时间段并停止进度条。

+0

你的问题是什么? –

回答

2

我认为没有办法像event知道文件下载是否已经完成。通过PHP

  1. 打开文件,并通过HTTP
  2. 我想有一个变量像$_SESSION['lock'] = true;,将之前设置它开始发送发送给客户端的浏览器:如果我是你,我会做这样的事情流输出
  3. 当文件下载得成品,我会解锁一个被$_SESSION['lock'] = false;
  4. 变量文件下载过程中,我可以检查lock值,看看是否该文件已经完成与否。让我们说每个2-5秒通过AJAX。
  5. 当它完成 - lockfalse,我可以做任何需要,但我不知道如何显示进度栏,甚至大约。

需要注意的是,如果你不使用的东西像$_SESSION,锁定机构不会在所有工作,因为脚本将每一次的新鲜运行,而无需近期变量的任何想法,等。

更新:

您可能需要使用$_SESSION['finished'],而不是$_SESSION['lock']这会更有意义,在理解的源代码条款。

+0

感谢您的回复。我们的服务器是一个支持HTTP并且不支持PHP的小型服务器应用程序。 – DAC84

+0

就像是一个嵌入式应用程序或服务器?你能告诉我你的服务器的名称,看看它支持什么吗? (可能它应该支持服务器端的东西,比如CGI ...) – Mahdi

+0

感谢您对响应的兴趣。但抱歉的老板,它是一个完全依靠我们自己开发的服务器。只需监听一个端口并提供来自浏览器的页面请求并处理来自客户端的其他请求。 – DAC84