PHP正在上传0字节的图像


PHP uploading 0 bytes image

当我用PHP上传一个imagen时,我没有得到任何错误,并且服务器上的图像是0字节。考虑事项:

  • phpinfo()中的File_uploads处于打开状态
  • phpinfo()中Upload_max_filesize为8M
  • Upload_tmp_dir已设置,具有777个权限
  • 如果我运行file_exists($_FILES['userfile']['tmp_name']),它将返回真的
  • 如果我运行getimagesize($_FILES['userfile']['tmp_name']),我会得到一个Read错误通知。图像有效,可以使用系统图像打开查看器

我正在使用一个非常简单的上传脚本进行测试:

HTML:

<form enctype="multipart/form-data" action="upload.php" method="POST">
        <input type="hidden" name="MAX_FILE_SIZE" value="512000" />
        Send this file: <input name="userfile" type="file" />
        <input type="submit" value="Send File" />
</form> 

PHP:

<?php
//$uploaddir = '/var/www/html/upload';
$uploaddir = '';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo "<p>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
  echo "File is valid, and was successfully uploaded.'n";
} else {
   echo "Upload failed";
}
echo "</p>";
echo '<pre>';
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>

当我提交文件时,我没有收到任何错误,并且图像是在目标文件夹中创建的,具有正确的名称和扩展名,但正如标题所说,它是0字节(当然,它不能被拒绝)。

谢谢你抽出时间。

编辑Sajad Karuthedath让我看到$_FILE['FILE']['size']值为0!!导致文件上传不正确的问题是什么?

编辑2上传txt,pdf,tar文件工作正常。。问题只出在图像类型的文件上!

试试这个简单的上传脚本,

在保存到服务器之前,您应该检查错误

 if ( 0 < $_FILES['file']['error'] ) {
    echo 'Error: ' . $_FILES['file']['error'] . '<br>';
    }
    else {
    move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/'.$_FILES['file']['name']);
      }

注意:更改phpinfo()后,不要忘记重新启动服务器或examplep

注意:也更改php 中的post_max_size = 25M

为了跟踪问题,只需添加一个"退出"直接在";移动已部署文件"命令,如果文件被正确上传;move_upload";这是错误的。在我的情况下,我在上传后打开上传的文件,并使用覆盖(w+)选项来检查文件的锁定状态。它正在制作一个空文件。