Php 文件上载导致文件大小为0,错误代码为0

Php 文件上载导致文件大小为0,错误代码为0,php,file,upload,Php,File,Upload,我正在尝试将图像上载到php脚本。我有一个非持久性的bug,导致上传的一些图像的文件大小为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); } 在日志文件中给我这些信息: 2012年

我正在尝试将图像上载到php脚本。我有一个非持久性的bug,导致上传的一些图像的文件大小为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);
    }
在日志文件中给我这些信息:

  • 2012年10月3日12:12:54 name=>59175248636.jpg
  • 2012年10月3日12:12:54 type=>image/jpeg
  • 2012年10月3日12:12:54 tmp_name=>C:\WINDOWS\Temp\php411F.tmp
  • 2012年10月3日12:12:54错误=>0
  • 2012年10月3日12:12:54尺寸=>0
  • 从日志文件中可以看出,该脚本在Windows计算机上运行,对此我所知有限。我已经将post_max_大小更改为10M,并在php.ini中将_max_大小上载为10M

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

    编辑-尝试以下方法:

    我认为您可能需要将$\u文件['file']更改为$\u文件['image\u 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']);
    
    }
    
    这并不能解决随机文件大小的问题,但它将允许您的代码/进程继续。将其视为失败的上载,并告诉用户重试


    使用此发布的代码

    图像是否存储在文件系统中。这其实是个好问题。当我在一个我无法访问的服务器上部署它时,我唯一的测试方法就是使用move_上传的文件。此方法返回true,文件以filsize 0保存(到我想要的目录中)。你不需要使用temp_size之类的东西来获得文件大小吗?忽略我的注释-据我所知,这是不正确的。是的,我看过那篇文章,但正如你在我发布的日志中看到的,错误代码是0,这意味着上传成功。文件大小是否超过了最大文件大小??我认为这将设置文件大小为零,即使它已成功上传。-您可以通过尝试一个超过10mb的文件来测试这一点,可能我也尝试过,但我只得到以下消息:注意:第35行的C:\Inetpub\wwwroot\iPost\receiver.php中的未定义索引:image\u文件。所以我猜问题不在于尺寸。这里可能有更多的东西可以尝试:不,只有jpg类型。这是我唯一接受的文件类型。