我正在用 php 构建一个文件管理器。每个请求都由一个 php 脚本处理,即直接下载路径也将被预先检查,因此我可以禁止某些下载并显示其他内容。
我现在的问题是,stackoverflow 在这里发挥作用,我不知道任何解决方案如何准备下载,也就是首先显示内容,然后刷新页面一次,以便我可以发送文件......但没有副作用。
刷新当然不是问题,但目前还没有刷新解决方案有效。通过 header() 刷新可以防止我的页面显示任何内容,刷新或 javascript 工作与内容的显示有关,但是,使用例如 wget 的下载不再工作。
换句话说,问题是:
由于之前的内容加载会发送一个有效的状态码,因此像 wget 或 curl 这样的程序不会跟随刷新,所以它不会下载文件,只会下载 html。要使用 curl 或 wget 获取实际文件,您需要发送 http 标头,但是,3XX 重定向状态代码将需要 Location 的值。如果 header('Location: ..') 被发送,网站将不会在刷新前显示。
需要一种解决方案,即可以发送适当的状态代码,并且内容仍将在文件分发之前加载。
找到了一种状态码为 206 的部分解决方案,它不需要位置值并且仍可与 wget 一起使用。curl 实际上没有。所以也许还有更好的解决方案?
谢谢你的帮助!