2013-05-14 54 views
3
if (($_FILES["fileToUpload"]["type"] == "image/gif") 
    || ($_FILES["fileToUpload"]["type"] == "image/jpeg") 
    || ($_FILES["fileToUpload"]["type"] == "image/png") 
    &&($_FILES["fileToUpload"]["size"] <= 100)) 
    { 
    echo $_FILES["fileToUpload"]["size"] ; 
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
    "C:/upload/" . $_FILES["fileToUpload"]["name"]); 
    } 
elseif (($_FILES["fileToUpload"]["type"] == "image/gif") 
    || ($_FILES["fileToUpload"]["type"] == "image/jpeg") 
    || ($_FILES["fileToUpload"]["type"] == "image/png") 
    &&($_FILES["fileToUpload"]["size"] <= 1000000)) 
    { 
    echo $_FILES["fileToUpload"]["size"] ; 
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
    "C:/image/" . $_FILES["fileToUpload"]["name"]); 
    } 

    else 
    { 
    echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb"; 
    } 

但是我的文件只保存在上傳文件夾中。我想,如果文件大小小於100KB,那麼它應該保存文件夾上傳否則應保存圖像。請幫助如何在不同文件夾中保存不同文件大小的不同文件

+0

'$ _FILES ['userfile'] ['type']'是不可降解的。你應該用'finfo'來檢查MimeType。請參閱:http://stackoverflow.com/a/16499251/1846562 – mpyw 2013-05-14 07:14:53

+0

我會提供我的答案,請稍等片刻。 – mpyw 2013-05-14 07:17:49

回答

0

因爲&&運營商具有比||更高的優先級。使用這些括號

if (($_FILES["fileToUpload"]["type"] == "image/gif" 
    || $_FILES["fileToUpload"]["type"] == "image/jpeg" 
    || $_FILES["fileToUpload"]["type"] == "image/png") 
    && $_FILES["fileToUpload"]["size"] <= 100) 

在所有條件。我還除去一些多餘的托架,因爲==<=運營商具有比邏輯運算符(除了!)更高的優先級。也php operators precedence

0

見你寫道:if(a || b || c && d)。這被解釋爲if(a || b || (c && d)),所以只有PNG圖像將被存儲在「圖片」文件夾。 試試這個代碼:

if (($_FILES["fileToUpload"]["type"] == "image/gif") 
    || ($_FILES["fileToUpload"]["type"] == "image/jpeg") 
    || ($_FILES["fileToUpload"]["type"] == "image/png") 
    { 
    if($_FILES["fileToUpload"]["size"] <= 100){ 
     ... 
    }elseif($_FILES["fileToUpload"]["size"] <= 1000000){ 
     ... 
    }else{ 
     echo "Files must be less than 10,000 kb"; 
    }  
    }else{ 
    echo "Files must be either JPEG, GIF, or PNG"; 
    } 
0

試着這麼做:

if($_FILES["fileToUpload"]["type"] == "image/gif" || $_FILES["fileToUpload"]["type"] == "image/jpeg" || $_FILES["fileToUpload"]["type"] == "image/png"){ 
    if($_FILES["fileToUpload"]["size"] <= 100){ 
     echo $_FILES["fileToUpload"]["size"]; 
     move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "C:/upload/" . $_FILES["fileToUpload"]["name"]); 
    }elseif($_FILES["fileToUpload"]["size"] <= 1000000){ 
     echo $_FILES["fileToUpload"]["size"] ; 
     move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "C:/image/" . $_FILES["fileToUpload"]["name"]); 
    }else{ 
     #file size error 
    } 
}else{ 
    echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb"; 
} 
0

的大小的值可以是字符串。我沒有測試過它。但你可以試試這個:

if (in_array($_FILES["fileToUpload"]["type"], array("image/gif", "image/jpeg", "image/png")) { 
    if (((int) $_FILES["fileToUpload"]["size"]) <= 100) { 

    echo $_FILES["fileToUpload"]["size"] ; 
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
    "C:/upload/" . $_FILES["fileToUpload"]["name"]); 
    } 
elseif (((int) $_FILES["fileToUpload"]["size"]) <= 1000000) 
    { 
    echo $_FILES["fileToUpload"]["size"] ; 
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], 
    "C:/image/" . $_FILES["fileToUpload"]["name"]); 
    } 
    else 
    { 
    echo "Files must be either JPEG, GIF, or PNG and less than 10,000 kb"; 
    } 
0

完全檢查錯誤。

<?php 

$upload_key = 'fileToUpload'; 

if (isset($_FILES[$upload_key])) { 

    try { 

     $error = $_FILES[$upload_key]['error']; 
     switch ($error) { 
      case UPLOAD_ERR_INI_SIZE: 
       throw new Exception('Exceeded upload_max_filesize'); 
      case UPLOAD_ERR_FORM_SIZE: 
       throw new Exception('Exceeded MAX_FILE_SIZE'); 
      case UPLOAD_ERR_PARTIAL: 
       throw new Exception('Incomplete file uploaded'); 
      case UPLOAD_ERR_NO_FILE: 
       throw new Exception('No file uploaded'); 
      case UPLOAD_ERR_NO_TMP_DIR: 
       throw new Exception('No tmp directory'); 
      case UPLOAD_ERR_CANT_WRITE: 
       throw new Exception('Can\'t write data'); 
      case UPLOAD_ERR_EXTENSION: 
       throw new Exception('Extension error'); 
     } 

     $finfo = new finfo(FILEINFO_MIME); 
     $name  = $_FILES[$upload_key]['name']; 
     $tmp_name = $_FILES[$upload_key]['tmp_name']; 
     $size  = $_FILES[$upload_key]['size']; 

     if ($size > 1000000) 
      throw new Exception('Exceeded 10000KB limit'); 
     if (!is_uploaded_file($tmp_name)) 
      throw new Exception('Not an uploaded file'); 

     $type = $finfo->file($tmp_name); 

     if ($type === false) 
      throw new Exception('Failed to get MimeType'); 
     if (
      $type !== 'image/png; charset=binary' && 
      $type !== 'image/jpeg; charset=binary' && 
      $type !== 'image/gif; charset=binary' 
     ) 
      throw new Exception('Only PNG, JPEG, GIF available'); 

     $dir = ($size <= 100) ? 'C:/upload/' : 'C:/image/'; 
     $new_name = $dir.$name; 

     if (!move_uploaded_file($tmp_name,$new_name)) 
      throw new Exception('Failed to move uploaded file'); 

     echo 'File successfully uploaded'; 

    } catch (Exception $e) { 

     echo 'Error: '.$e->getMessage(); 

    } 

} 
相關問題