1

我正在尝试将图像上传到 php 脚本。我有一个非持久性错误,导致上传的某些图像的文件大小为 0。我尝试将 _FILES 数组打印到我的日志文件中,它显示错误代码为 0,应该没问题.

这些行:

foreach($_FILES['image_file'] as $key => $val){
      error_log(date('j/n/o H:i:s')." ". $key ." => ".$val. "\n", 3,$log_path);
    }

在日志文件中给我这些:

  1. 2012 年 3 月 10 日 12:12:54 名称 => 59175248636.jpg
  2. 2012 年 3 月 10 日 12:12:54 类型 => 图像/jpeg
  3. 2012 年 3 月 10 日 12:12:54 tmp_name => C:\WINDOWS\Temp\php411F.tmp
  4. 2012 年 3 月 10 日 12:12:54 错误 => 0
  5. 2012 年 3 月 10 日 12:12:54 大小 => 0

从日志文件中可以看出,这个脚本在 Windows 机器上运行,我对此知之甚少。我已经将 php.ini 中的 post_max_size 更改为 10M,并将 upload_max_size 更改为 10M。

我对这个问题感到震惊。当我在自己的设备上进行测试时,它工作正常,但由于某种原因,当我的测试人员尝试时,它失败了。

4

2 回答 2

0

编辑 - 试试这个:

我认为您可能需要将 $_FILES['file'] 更改为 $_FILES['image_file'] 才能使用您的设置。为了便于阅读,我将其保留如下...

if ($_FILES['file']['error'] === UPLOAD_ERR_OK && $_FILES['file']['size'] > 0){

   ... upload was successful ...

}elseif($_FILES['file']['error'] === UPLOAD_ERR_OK && $_FILES['file']['size'] == 0){

   die("Upload failed, random upload issue... please try again);
   // change this error to something more useful... (leave this error in for testing)

}else {

   die("Upload failed with error code " . $_FILES['file']['error']);

}

这并不能解决随机文件大小问题,但它将允许您的代码/进程继续。将其视为上传失败并告诉用户重试...

使用Marc B发布的这个stackoverflow 帖子中的代码

于 2012-10-03T11:37:52.323 回答
0

由于我不时遇到这种情况,我想我只会发布可能发生这种情况的一个原因:如果您尝试从压缩文件的 Windows 资源管理器视图中拖放文件(双击压缩文件,它就像一个文件夹一样打开)到您的上传者。我经常使用 DropzoneJS,默认情况下,它会立即处理这些文件并将其推送到我的服务器,最终看到一个 0 字节的文件,没有文件上传错误。因此,如果您的用户正在执行上述操作,那可能就是您最终得到此类文件的原因。

于 2022-02-10T19:33:39.487 回答