【问题标题】:keep getting upload php $_FILES error = 3 (partially uploaded)不断上传 php $_FILES 错误 = 3(部分上传)
【发布时间】:2014-08-24 20:02:07
【问题描述】:

我正在使用 Yii 框架的 dropzone 扩展来让注册用户上传一些文件。一切运行良好,但一些用户尝试上传的某些文件返回错误 = 3,当上传的文件仅部分上传时会发生这种情况。

$file_error = $_FILES['Project']['error']['file'];
if ($file_error != 0) {
            mail('myemail@gmail.com', 'fileError',json_encode($_FILES['Project']));
}

我收到了很多来自这个功能的电子邮件

收到 JSON

{"name":{"file":"3.jpg"},"type":{"file":""},"tmp_name":{"file":""},"error":{"file":3},"size":{"file":0}}

如何调试此错误并了解导致此错误发生的情况?

发生了这个错误 1-如果用户在上传时刷新页面。 2-如果用户取消上传(我的网站没有取消选项)。 3- 如果在上传时互联网连接丢失。

我还在寻找其他案例。

【问题讨论】:

  • 离题,但if (!$file_error == 0) { 应该是if ($file_error != 0) {
  • @CharlotteDunois 为什么? OP 希望在出现错误时收到电子邮件,而不是在没有错误时发送电子邮件。
  • 是的,谢谢,但在我的情况下结果相同
  • @Ohgodwhy 如果没有错误,$file_error 等于 0。
  • yes 0 表示没有错误检查这个link

标签: php file-upload yii yii-extensions dropzone.js


【解决方案1】:

在我的情况下,使用慢速互联网连接上传中/大文件时发生“部分上传”问题。

对我有用的解决方案是在 httpd.conf 文件中设置一些 Apache 配置:

TimeOut 300
KeepAliveTimeout 10
RequestReadTimeout handshake=0 header=20-1200,MinRate=200 body=20,MinRate=200

希望对你有帮助。

【讨论】:

  • 这拯救了我的一天!对于 PHP 开发人员来说,这样的设置非常模糊,因为更改 PHP ini 设置并没有做任何事情。我只使用了RequestReadTimeout 设置顺便说一句。
【解决方案2】:

正如 php 文档所说,这个错误是

UPLOAD_ERR_PARTIAL is given when the mime boundary is not found after the file data. A possibly cause for this is that the upload was cancelled by the user (pressed ESC, etc).

还有一些变种要检查:

  1. 权限错误(我怀疑,因为它会破坏所有用户)。

  2. 服务器可用空间不足。

  3. 从 iOS 上传时出现此错误。

  4. 上传文件夹时可能会出现此错误(由于浏览器限制)。在 Mac OSX 上,它会 100% 发生。

所以这是可能的错误检查。希望这会有所帮助。

【讨论】:

  • 这肯定不是权限问题,服务器上有很多空间。我会检查 ios 但如果是 ios 问题我该如何解决?
  • 实际上不知道如何解决它。也许它现在正在工作,添加header('Connection: close'); 并没有帮助我。我刚刚离开它,因为它不是经常出错。这个问题差不多是一年前的事了,所以现在可能已经解决了。
  • 我现在将尝试更改标头连接以关闭它的“Keep-Alive”
  • 我正在从 iOS 上传并收到此错误,如何解决?
  • IOS 的一个可能问题是如果浏览器失去焦点,它的浏览器可能会终止正在进行的 ajax 连接(例如文件上传)。例如在上传过程中点击主页按钮,或打开文件浏览器或相机进行第二次上传。
猜你喜欢
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 2011-05-04
  • 2015-12-29
  • 1970-01-01
  • 2011-11-19
  • 2015-08-22
相关资源
最近更新 更多