PHP:stream_copy_to_stream!= $ _SERVER ['CONTENT_LENGTH']

时间:2012-02-22 00:45:09

标签: php file-upload

我有一个用PHP编写的网站,在这个网站上,我使用Andrew Valums' "Ajax Upload" JavaScript,它使用XHR上传支持它的浏览器中的文件和其他浏览器的隐藏iframe。使用XHR时,我的PHP脚本确保stream_copy_to_stream($source, $dest)等于$_SERVER['CONTENT_LENGTH'](这就是示例PHP脚本的样子)。虽然我实现这个时我不确定这个检查的原因,但我仍然把代码留在那里。事实证明,用户上传文件时有几次,而且这两个值不同。我想知道是什么原因引起的。我猜这是一个网络超时,但这是唯一可能导致它的事情吗?此外,有没有时间$_SERVER['CONTENT_LENGTH']不会被设置?

谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 如果网络连接中断(例如,用户导航,点击“停止”等),您将无法获取所有数据,并且您的流长度将短于Content-Length标头。
  2. 如果未设置$_SERVER['CONTENT_LENGTH']标头,则取消设置
  3. Content-Length。这应该仅在Transfer-Encoding: chunked
  4. 时发生