2

可以this => set_time_limit ()Die()用于取消文件上传。

即当用户单击按钮set_time_limit ()功能将执行。

它会停止上传吗?

4

4 回答 4

4

您最好使用 Javascript 解决方案来完成此操作。当然,由于它是客户端,人们可以绕过它。如果是安全问题,请不要依赖 Javascript。如果您运行 Apache,您可以尝试mod_reqtimeout,但是这是针对请求标头的,所以我不完全确定文件上传是否会成为其中的一部分。

编辑:还有 Apache Timeout 指令KeepAliveTimeout看起来更有希望。

Edit2:我只是偶然发现了这个。看起来这正是您正在寻找的(假设 PHP >= 5.4)。从其中一条评论中,对于以前的版本,您可以使用这个.

于 2012-06-13T01:59:41.867 回答
2

它不会

PHP 本身不参与文件上传进度。当网络服务器开始运行您的脚本时 - 文件已经上传

于 2012-06-13T01:52:51.747 回答
1

Afaik,PHP 无法“取消”上传。只要 PHP 被告知您的上传,上传过程就完成了。

但是,这只是一个猜测,但由于有一种方法可以使用 APC 创建进度条(然后检查上传过程),您也许可以停止它。但我真的不确定,因为检查(即:进度条)是在不同的 php 进程中运行的,该进程无法与当前上传的文件进行交互。

于 2012-06-13T01:58:56.520 回答
1

由于请求和响应的工作方式,您将始终必须等待数据交付,然后才能对其进行处理,包括取消上传。您可以,正如@Mike 所说,设置一个超时,但这并没有真正取消上传,这基本上是在告诉 php,嘿,这个用户需要很长时间才能做某事,所以告诉他们我们不再等待了。你最好使用 ajax 来做这样的事情。

于 2012-06-13T02:12:51.033 回答