2014-09-25 52 views
1
<?php 
if(isset($_FILES['menubg'])){ 
    $errors= array(); 
    $targetDir = $_SERVER['DOCUMENT_ROOT'].'/user/usermenu_background/'.($_SESSION['user_id']).''; 

    // Create target dir 
    if (!file_exists($targetDir)) { 
     @mkdir($targetDir); 
    } 
     $file_name = 'menubg.jpg'; 
//  $file_name = $_FILES['menubg']['name']; 
     $file_size =$_FILES['menubg']['size']; 
     $file_tmp =$_FILES['menubg']['tmp_name']; 
     $file_type=$_FILES['menubg']['type']; 
     $file_ext=strtolower(end(explode('.',$_FILES['menubg']['name']))); 
     $extensions = array('jpg');   
     if(in_array($file_ext, $extensions) === false){ 
      $errors[]='extension not allowed, please choose a JPG file.'; 
     } 
     if($file_size > 2097152){ 
      $errors[]='File size must be under 2 MB'; 
     }    
     if(empty($errors)==true){ 
      move_uploaded_file($file_tmp,'user/usermenu_background/'.($_SESSION['user_id']).'/'.$file_name); 
      echo "No errors "; 
     } else { 
      print_r($errors); 
     } 
} 
?> 

出於某種原因,每次我救我的表格時,我得到一個錯誤信息( 陣列([0] =>不允許延期,請選擇一個JPG文件。))不應該被打印,除非文件正在上傳。爲什麼每次保存表單時都會打印此錯誤消息?

當您上傳文件時,應檢查文件以確保您正在上傳.jpg文件。它被困在:if(isset($_FILES['menubg'])){}。在我的表單上,人們並不總是要上傳文件,它不應該告訴我一個空白文件有一個不允許的擴展名。

回答

1

您應該使用is_uploaded_file方法而不是isset

在這裏看到了答案:How to check whether the user uploaded a file in PHP?

+0

我改變了第一線,如果(is_uploaded_file($ _ FILES [ 'menubg'] [ 'tmp_name的值'])){和固定我寫了一篇關於這個問題,不過我也如果我上傳帶有錯誤擴展名的文件,則不會再收到錯誤消息! – 2014-09-25 20:04:52

+0

@JamesLyngaas你還能上傳一個帶有.jpg擴展名的文件嗎? – 2014-09-25 20:06:50

+0

是的,這是有效的。但是,如果我選擇一個PNG文件,它會上傳並將其命名爲menubg.jpg。 – 2014-09-25 20:09:53

相關問題