2012-08-31 153 views
0

我有我的PHP照片上傳腳本的問題。當我上傳一個超過2MB的文件時,它不會顯示錯誤,當我點擊upload..yet它在那裏在我的腳本..任何想法,爲什麼這是?例如。我上傳了一個.wma文件,它的大小是2.38MB ..超過了限制..但它只是說「文件類型不允許」,爲什麼它沒有顯示超過2MB的錯誤?錯誤沒有顯示

這裏是我的腳本:

<?php 
include 'init.php'; 

if(!logged_in()){ 
header('Location: index.php'); 
exit(); 
} 

include 'template/header.php'; 
?> 

<h3>Upload Image</h3> 

<?php 

if(isset($_FILES['image'], $_POST['album_id'])){ 
$image_name = $_FILES['image']['name']; 
$image_size = $_FILES['image']['size']; 
$image_temp = $_FILES['image']['tmp_name']; 

$allowed_ext = array('jpg', 'jpeg', 'png', 'gif'); 
$image_ext = strtolower(end(explode('.', $image_name))); 

$album_id = $_POST['album_id']; 

$errors = array(); 

if (empty($image_name) || empty($album_id)){ 
    $errors[] = 'Something is missing'; 
} else { 

    if(in_array($image_ext, $allowed_ext) === false){ 
     $errors[] = 'File type not allowed'; 
    } 

    if($image_size > 2097152){ 
     $errors[] = 'Maximum file size is 2MB'; 
    } 

    if(album_check($album_id) === false){ 
     $errors[] = 'Couldn\'t upload to that album'; 
    } 

} 

if(!empty($errors)){ 
    foreach ($errors as $error){ 
     echo $error, '<br />'; 
    } 
} else { 
    // upload image 
} 
} 

$albums = get_albums(); 

if(empty($albums)){ 
echo '<p>You don\'t have any albums. <a href="create_album.php">Create an album</a></p>'; 
} else { 
?> 

<form action="" method="post" enctype="multipart/form-data"> 
<p>Choose a file:<br /><input type="file" name="image" /></p> 
<p> 
Choose an album:<br /> 
<select name="album_id"> 
    <?php 
    foreach ($albums as $album){ 
     echo '<option value="', $album['id'], '">', $album['name'], '</option>'; 
    } 
    ?> 
</select> 
</p> 
<p><input type="submit" value="Upload" /></p> 
</form> 

<?php 
} 

include 'template/footer.php'; 
?> 

再次感謝所有耐心的與我大概簡單的職位很多,你更有經驗的程序員那裏的! -TechGuy24

+0

您是否檢查過「$ image_size」設置爲正確的值?如果您的服務器因其設置而截斷了上傳,那麼您的文件大小是否會低於閾值? – andrewsi

+0

對不起,我不確定我是否理解你的意思? – WebDeVGuy24

+0

嘗試在代碼中的某處添加'echo $ image_size',然後再次上傳您的WMA文件。它會告訴你文件在處理時的實際大小。 – andrewsi

回答

1

根據代碼,它應該,如果上傳的文件大小> 2mb。但是,電腦永遠不會犯錯,但人類從而調試非常重要。

只是調試語句

if($image_size > 2097152){ 
    echo "in if, image size=".$image_size; 
    $errors[] = 'Maximum file size is 2MB'; 
} else { 
    echo "in else, image size=".$image_size; 
} 

這是調試的只是第一步替換代碼

if($image_size > 2097152){ 
    $errors[] = 'Maximum file size is 2MB'; 
} 

。它可能會或可能不會確定真正的原因。讓我們知道輸出。評論後

編輯:

把這些代碼在文件的開始。

echo "files<pre>"; 
print_r($_FILES); 
echo "</pre>imgsz=".$_FILES['image']['size']; 

什麼是輸出。我想這可能包括

[error] => 1 

如果提示錯誤= 1,檢查http://php.net/manual/en/features.file-upload.errors.php

這意味着你的php.ini中的upload_max_filesize設置爲2MB以下。只要人員上傳的文件比這個大,它就不會到達您的代碼,因爲PHP默認拒絕該文件。

要解決這個問題,請打開php.ini並增加upload_max_filesize的限制。

編輯3評論

變化

if($image_size > 2097152){ 

if($_FILES['image']['error']==1){ 

這將解決這個問題。

+0

它現在說「在其他,圖像大小= 0文件類型不允許」 – WebDeVGuy24

+0

我希望你得到了答案。 –

+0

但爲什麼沒有看到大小?在我上傳文件之前,將鼠標懸停在文件上顯然是2.38mb .. – WebDeVGuy24