2011-12-06 105 views
0

我想實現一個小的更新配置文件圖片窗體。上傳圖片失敗的PHP後端

<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個回顯語句顯示預期的結果 - 大小,零的錯誤值,名稱,類型和臨時名稱。

我得到「到達這裏!!」在我的控制檯上。然而, imagecreatefrompng似乎無聲地崩潰。不知何故Try-catch似乎沒有發現錯誤。

幫助?謝謝!

+0

你是什麼意思'默默地崩潰'你在日誌或屏幕上出現任何錯誤? – Jakub

+0

我想你不能直接轉換到臨時上傳的文件,你怎麼做move_uploaded_file()然後執行imagecreatefrom png? – ajreal

+0

@Navneet代碼的工作原理如下。我沒有看到任何錯誤。你將獲得'imagecreatefrompng()'函數的資源ID,請參閱http://php.net/manual/en/function.imagecreatefrompng.php,即爲什麼你沒有得到不是原始圖像。 –

回答

0

我還沒有處理的文件上傳PHP永遠的,但有可能這行:

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

應該

$picture_uploaded = $_FILES["new_user_picture"]

第一行應該是讓你獲得上傳文件的文件名,而第二行(上面編輯過的行)應該是對文件本身的引用。

HTH。

編輯:那麼,看到我的答案是不正確的......這有幫助嗎? http://www.php.net/manual/en/function.imagecreatefromstring.php 。在用戶註釋/評論中有一個幫助函數可能會簡化你在做什麼

+0

這些函數實際上需要文件名和路徑。這是行不通的。 – Navneet

+0

果然。剛剛完成閱讀手冊,並即將編輯我的答案相應...對不起。 :p –