php后端上传图像失败


Uploading image failing on php back-end

我试图实现一个小的更新配置文件的pic形式。

<form method="post" action="<?php echo $filename;?>" name="change_picture_form" id="change_picture_form" enctype="multipart/form-data">
    <input type="hidden" name="action" value="change_picture" />
    <input type="file" name="new_user_picture">
    <input type="submit" class="submitButton" value="Save Changes"/>
</form>

目标php文件有以下代码:

echo $_FILES['new_user_picture']['size']." ";
echo $_FILES['new_user_picture']['tmp_name']." ";
echo $_FILES['new_user_picture']['name']." ";
echo $_FILES['new_user_picture']['error']." ";
echo $_FILES['new_user_picture']['type']." ";
$picture_uploaded = $_FILES["new_user_picture"]["tmp_name"];
if( is_uploaded_file( $picture_uploaded ) ) {
    $imagesize = getimagesize( $picture_uploaded );
    switch( $imagesize[2] ) {
        case IMAGETYPE_PNG:
              $extension = '.png';
              echo "<script>console.log('Reached here!!')</script>";
              try {
                  $image_original = imagecreatefrompng( $picture_uploaded );
                  if (!$image_original)
                      echo '<script>console.log("not image original")</script>';
              } catch(Exception $e) {
                  echo "<script>console.log('Error!!')</script>";
              }
              break;
        case IMAGETYPE_JPEG: ....
        ...
    }
}
在这里,我有许多图像类型的类似代码。我通过尝试上传png图像来测试这段代码。前5条echo语句显示预期的结果——大小、错误值0、名称、类型和临时名称。

我在控制台上看到"到达这里!!"然而,imagecreatefrompng似乎无声地崩溃了。Try-catch似乎没有捕捉到错误。

帮助吗?谢谢!

我从来没有在PHP中处理过文件上传,但是有可能这一行:

$picture_uploaded = $_FILES["new_user_picture"]["tmp_name"]
应该

$picture_uploaded = $_FILES["new_user_picture"] ?

第一行应该是上传文件的文件名,而第二行(上面编辑的行)应该是对文件本身的引用。

HTH .

EDIT:好吧,看看我的答案是如何不正确的…这有帮助吗?http://www.php.net/manual/en/function.imagecreatefromstring.php. 在用户注释/注释中有一个帮助函数,它可以简化您所做的工作