【问题标题】:File upload results in file size 0 and error code 0文件上传导致文件大小为 0 且错误代码为 0
【发布时间】:2012-10-03 11:07:23
【问题描述】:

我正在尝试将图像上传到 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. 3/10/2012 12:12:54 姓名 => 59175248636.jpg
  2. 3/10/2012 12:12:54 类型 => 图像/jpeg
  3. 3/10/2012 12:12:54 tmp_name => C:\WINDOWS\Temp\php411F.tmp
  4. 3/10/2012 12:12:54 错误 => 0
  5. 3/10/2012 12:12:54 大小 => 0

可以从日志文件中读取,此脚本在 Windows 机器上运行,我对此知之甚少。我已经在php.ini中把post_max_size改成了10M,upload_max_size改成了10M。

我对这个问题大吃一惊。当我在自己的设备上进行测试时,它运行良好,但由于某种原因,当我的测试人员尝试时,它失败了。

【问题讨论】:

  • 图片是否存储在文件系统中??
  • 好吧。这实际上是一个好问题。当我将它部署在我无法访问的服务器上时,我唯一的测试方法是使用 move_uploaded_file。此方法返回 true 并使用 filsize 0 保存文件(到我想要的目录)。
  • 你不必使用 temp_size 之类的东西来获取文件大小吗?
  • 忽略我的评论 - 据我所知,这是不正确的

标签: php file upload


【解决方案1】:

编辑 - 试试这个:

我认为您可能需要将 $_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']);

}

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

使用来自stackoverflow postMarc B 发布的代码

【讨论】:

  • 嗨,克里斯。是的,我看过那个帖子,但是从我发布的日志中可以看到,错误码是0,根据php.net/manual/en/features.file-upload.errors.php表示上传成功。
  • 文件大小是否超过了最大文件大小??我认为这会将文件大小设置为零,即使它已成功上传。 - 您可以通过尝试超过 10mb 的文件来测试这一点
  • 我试过了,但我只收到以下消息:注意:未定义索引:第 35 行 C:\Inetpub\wwwroot\iPost\receiver.php 中的 image_file。所以我猜它问题不是尺寸。
  • 更多可能的尝试在这里:sitepoint.com/upload-large-files-in-php
  • 不,只有 jpg 类型。这是我唯一接受的文件类型。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 2021-07-31
    • 1970-01-01
    • 2013-10-03
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多