2012-10-25 33 views
0

可能重複:
Getting ‘undefined index’ error while trying to use $_FILE in PHP

我已經爲圖像的PHP上傳表單。它使用會話變量來確定上傳目錄。上傳,滑塊目錄或側目錄有兩個選項,所以我有一個確定目錄的if語句。如果我從表單中刪除了這個,那麼整個事情都可以正常工作,但是$ _FILES似乎沒有被聲明,並且返回爲未定義的索引錯誤。

可以發現的代碼如下:

upload.php的

<?php 
include("resize-class.php"); 
$allowedExt = array('jpg', 'jpeg', 'JPG', 'JPEG'); 
$tmps = explode(".", $_FILES['file']['name']); 
$extension = end($tmps); 
session_start(); 
if ($_POST['dir'] == 'side'){ 
    $dirent = $_SESSION['sideDir']; 
} 
else if($_POST['dir'] == 'slider'){ 
    $dirent = $_SESSION['sliderDIR']; 
} 
else{ 
    die(); 
} 
echo $_POST['dir']; 
print_r($_FILES); 

if (($_FILES["file"]["type"] == "image/jpeg")&& ($_FILES["file"]["size"] < 4000000000)&& in_array($extension, $allowedExt)) { 
    if ($_FILES["file"]["error"] > 0) { 
     echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
     echo 'here'; 
    } else { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
     echo "Type: " . $_FILES["file"]["type"] . " <br />\n"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br /> \n"; 
     echo "Stored in: " . $_FILES["file"]["tmp_name"]. "<br />\n"; 

    } 
    if (file_exists($dirent. $_FILES["file"]["name"])) { 
     echo $_FILES["file"]["name"] . "already exists"; 
    } else { 
     $fName = $_FILES["file"]["name"]; 
     $tmpname = $_FILES["file"]["tmp_name"]; 
     move_uploaded_file($_FILES["file"]["tmp_name"], $dirent . $_FILES["file"]["name"]); 
     $number = FileCounter($dirent); 
     echo "Number of images in DIR: " . $number. " <br />\n "; 
     $number +1; 
     $resizeObj = new resize($dirent.$fName); 
     $resizeObj -> resizeImage(250, 150, 'crop'); 
     $resizeObj -> saveImage($dirent.$number.".jpg", 100); 
     unlink ($dirent.$_FILES["file"]["name"]); 
    } 
} else { 
    echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
} 
function FileCounter($dir) { 
      $counter = 0; 
      $iterator = new DirectoryIterator(dirname($dir)); 
      foreach ($iterator as $fileinfo) { 
       if ($fileinfo->isFile()) { 
        if ($fileinfo->getExtension() == "jpg") { 
         $counter++; 
         echo $counter . "\n"; 
        } 
       } 
      } 
      return $counter; 
     } 
?> 

HTML表單:

<form action="includes/upload.php" method="post"> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" id="file" /> 
    <div class="styled-select"> 
    <label for="dir"> Upload to:</label> 
    <select size="2" name="dir" multiple="yes" id="dir"> 
     <option value="side" >Side Images</option> 
     <option value="slider" >Slider Images</option> 
    </select> 
    </div> 
    <br /> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 

我猜測,有無論是在非常愚蠢的錯誤我代碼,我忽略了,因爲我一直在盯着它一個小時,或者有一些我不知道的$ _FILES和$ _POST。 (或者我可能已經把這個表單編成了一個白癡!)。

+0

你會實際上是更好粘貼在這裏的代碼 - 點擊次數更少,少廣告,更多的關注。 – nickhar

+4

Your from在表單元素 – Baba

+0

中缺少'enctype =「multipart/form-data」',如果該鏈接過期,則此帖不會對其他所有遇到類似問題的人無用。 –

回答

3

您的形式缺少

enctype="multipart/form-data"