Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何知道文件是否由用户下载?_Php_Download - Fatal编程技术网

Php 如何知道文件是否由用户下载?

Php 如何知道文件是否由用户下载?,php,download,Php,Download,我有一个功能,用户可以下载文件。 它很好用。但是- 如何知道用户是否下载或取消了文件 下载后,我会将当前页面重定向到另一个同样没有发生的页面 如果你们有人对此有任何想法,请告诉我。 (我在若姆拉做这件事) 问候,, 沙湖这取决于你想找多少麻烦 要知道他们是否真的下载了文件,唯一的方法就是将文件传输到客户端——这意味着要么连接到Joomla或您正在使用的任何底层web服务器,要么让下载通过一个PHP页面,该页面基本上只是从磁盘读取文件并将其发送出去。即使您这样做了,您真正知道的是该文件是由浏览器请

我有一个功能,用户可以下载文件。 它很好用。但是-

  • 如何知道用户是否下载或取消了文件
  • 下载后,我会将当前页面重定向到另一个同样没有发生的页面
  • 如果你们有人对此有任何想法,请告诉我。 (我在若姆拉做这件事)

    问候,,
    沙湖

    这取决于你想找多少麻烦

    要知道他们是否真的下载了文件,唯一的方法就是将文件传输到客户端——这意味着要么连接到Joomla或您正在使用的任何底层web服务器,要么让下载通过一个PHP页面,该页面基本上只是从磁盘读取文件并将其发送出去。即使您这样做了,您真正知道的是该文件是由浏览器请求的,并且您满足了请求。你不知道用户没有在事后立即扔掉它

    就在完成重定向时显示重定向而言,如果您已按照上述方式连接到流程中,则可以设置一个会话变量,标记文件是否已下载(例如,在发送最后一个字节后)。您可以使用Ajax定期查询该会话标志的状态,如果该标志返回为真,则可以使用JavaScript在客户机上执行重定向

    如果你只需要知道他们开始下载,你可以通过cookie机制来完成。发回文件时,将cookie添加到响应中。(您可以按照上述方式通过PHP文件进行下载,或者如果您的web服务器是高度可配置的,例如Apache可以这样做,您可以将其配置为自动添加cookie。)您的页面正在等待查看他们是否下载了该文件(或者至少开始下载该文件)使用JavaScript定期检查cookie(而不是轮询服务器),这会减少通信量。更详细地讨论了如何做。我在一个应用程序中这样做,服务器自定义生成一个大的PDF或ZIP供下载:当他们请求文件时,我显示一个“building”div,然后轮询cookie,当cookie出现时删除“building”div。在主流浏览器中,cookie正好在浏览器显示询问是将文件保存到磁盘还是打开文件的框时出现,因为这两个框都是由返回的响应触发的


    如果上面的内容太麻烦(对于某些用例,我认为可能会麻烦),您可以在下载链接上放置一个JavaScript
    click
    事件处理程序。这会告诉你他们点击了链接,但实际上没有告诉你更多的信息。

    嗨,非常感谢你提供的信息。事实上,所有这些对我来说都有点难理解。但我成功地重定向了afetr发送头()以下载文件。我使用了-header(“refresh:2;url=index.php”);2秒后会重新记录到index.php。@user251336:Ah,就这样了。:-)