2011-08-16 73 views
-3

我不斷收到以下錯誤,我不知道如何修復它!幫幫我!注意:未定義偏移量:0錯誤

注意:未定義抵消:0在C:\的public_html \ ADMIN \包括上線\ funcs.inc.php 51

我得到的警告輸出錯誤想法...

function getFileExtension($key) { 
    $extensions = array(IMAGETYPE_GIF => '.gif', IMAGETYPE_JPEG => '.jpg', IMAGETYPE_PNG => '.png'); 

    $exifType = exif_imagetype($_FILES['artwork']['tmp_name'][$key]); 
    LINE 51 ---> $ext = $extensions[$exifType]; 

    return $ext; 
} 



$ext = getFileExtension($key); 

if (!isset($ext)) { 
    $warning = 'Error: Unsupported file type (supported images: gif, jpeg, png).'; 
} 
+2

'$ key'是..? 51線在哪裏?你上傳了正確的文件嗎?你用什麼HTML來做到這一點?你可以用'print_r'來證明它嗎?你到目前爲止進行了哪些其他調試? –

回答

1

exif_imagetype的文檔表明,它沒有檢測到一個有效的簽名時返回false。如果你嘗試$extensions[false]你會得到你的偏移錯誤,所以這可能是發生了什麼。

+0

即時通訊上傳一個pdf,看看函數如何反應......這可能是爲什麼它返回一個偏移量錯誤,因爲它不在數組擴展中... – Marco

+1

@Marco - exif-imagetype不檢測PDF。你會看到引用的文檔中沒有相應的常量。 – borrible

+0

好的,我想我明白了!如果($ exifType)返回$ extensions [$ exifType],我添加了一個條件來檢查返回值;這似乎工作 – Marco

1

您是否檢查$ _FILES ['artwork'] ['tmp_name']是否爲空? 我想你的文件沒有上傳。

你應該提供更多細節或一些調試信息

問候

1

似乎你還沒有宣佈用逗號數組鍵:

array(IMAGETYPE_GIF => '.gif', IMAGETYPE_JPEG => '.jpg', IMAGETYPE_PNG => '.png'); 

嘗試使用此:

array('IMAGETYPE_GIF' => '.gif', 'IMAGETYPE_JPEG' => '.jpg', 'IMAGETYPE_PNG' => '.png'); 

並請讓我知道,如果它的工作原理。

+1

IMAGETYPE_GIF等...都是exif_imagetype常量,因此在數組中引用它們是不正確的。 – borrible

+0

嘗試一下,但它不是逗號 – Marco

+1

exif圖像類型可以不定義。例如:array(IMAGETYPE_GIF =>'gif','mime_type'=>'image/gif'), –

1

在任何情況下,exif_imagetype()都會返回一個您沒有在數組中定義的值,您將收到一個偏移量錯誤。更好的解決方法是在設置返回值之前測試數組鍵的存在。

function getFileExtension($key) { 
    $extensions = array(IMAGETYPE_GIF => '.gif', IMAGETYPE_JPEG => '.jpg', IMAGETYPE_PNG => '.png'); 

    $exifType = exif_imagetype($_FILES['artwork']['tmp_name'][$key]); 

    // Add this test. 
    // Modified because a value of false in $exifType will cause 
    // array_key_exists() to fail. 
    if($exifType && array_key_exists($exifType, $extensions)) { 
     $ext = $extensions[$exifType]; 
    } else { 
     $ext = false; 
    } 

    return $ext; 
} 

$ext = getFileExtension($key); 

if (!isset($ext)) { 
    $warning = 'Error: Unsupported file type (supported images: gif, jpeg, png).'; 
} 

更新,以測試在$ exifType一個值,因此它不會導致array_key_exists()失敗。

+0

警告:array_key_exists()[function.array-key-exists]:第一個參數應該是一個字符串或一個整數... – Marco

+0

這可能是因爲exif-imagetype沒有檢測到PDF,因此不存在於第一位 – Marco

+0

確實有效---> if($ exifType)return $ extensions [$ exifType]; – Marco