2012-01-18 135 views
-1

稱呼,我有問題,允許用戶(管理員)上傳文件/圖像到服務器的能力。任何幫助都感激不盡。php文件上傳不起作用

這裏是我的代碼的部分我在哪裏處理文件:

if ((($_FILES["image"]["type"] == "image/gif") 
    || ($_FILES["image"]["type"] == "image/jpeg") 
    || ($_FILES["image"]["type"] == "image/jpg") 
    || ($_FILES["image"]["type"] == "image/pjpeg")) 
    && ($_FILES["image"]["size"] < 20000)) 
    { 
     if($_FILES['image']['error'] > 0) 
     { 
      header('Location: addAd.php?message='.$_FILES['image']['error'].'!'); 
     } 
     else 
     { 
      if(file_exists('images/'.$_FILES['image']['name'])) 
      { 
       header('Location: addAd.php?message=file already exists!'); 
      } 
      else 
      { 
       move_uploaded_file($_FILES['image']['temp_name'],'images/'.$_FILES['image']['name']); 
       $fileName = $_FILES['image']['name']; 
      } 
     } 
    } 
    else 
    { 
     header('Location: addAd.php?message=Invalid file!'); 
    } 

這裏是我創建的形式:

echo '<form method="POST" action="" enctype="multipart/form-data">'; 
    for($i=1; $i<mysql_num_fields($rs); $i++) 
    { 
     $rsmd = mysql_fetch_field($rs,$i); 
     if($rsmd->name == 'description') 
     { 
      echo '<textarea name="'.$rsmd->name.'" cols="40" rows="10"></textarea><br />'; 
     } 
     else if($rsmd->name == 'image') 
     { 
      echo $rsmd->name.'<input type="file" name="'.$rsmd->name.'" /><br />'; 
     } 
     else 
     { 
      echo $rsmd->name.'<input type="text" name="'.$rsmd->name.'" /><br />'; 
     } 
    } 
    echo '<input type="submit" value="submit" name="submit">'; 
    echo '</form>'; 
+1

正在拋出什麼錯誤? – iLLin 2012-01-18 19:13:35

+0

是否打印了$ rsmd-> name'(是否爲空)?通過查看瀏覽器中的HTML進行驗證。發佈時$ _FILES數組是否爲空?將'var_dump($ _ FILES)'放在您發佈的代碼之上。另外還有一些「if」在那裏,檢查他們是否以你想要的方式進行評估。除了這些(這是基本的調試),什麼_does_發生? 「根本不工作」不是錯誤消息。 – CodeCaster 2012-01-18 19:14:27

+0

$ rsmd-> name確實返回一個值,並且var_dump是: array(1){[「image」] => array(5){[「name」] => string(7)「422.jpg 「[」type「] => string(10)」image/jpeg「[」tmp_name「] => string(18)」/ var/tmp/php2VUtCl「[」error「] => int(0)[」size 「] => int(23303)}} – 2012-01-18 19:22:28

回答

0

$_FILES['image']['temp_name']應該是:$_FILES['image']['tmp_name']

move_uploaded_file($_FILES['image']['tmp_name'],'images/'.$_FILES['image']['name']); 
+0

謝謝,但它仍然沒有上傳。我的文件夾權限是755.這可能是一個問題嗎? – 2012-01-18 19:33:45

+0

@ user1090051 20000字節= 19.53125千字節。你確定 ?經過測試並在我的電腦上工作。 – 2012-01-18 19:35:02

+0

我把它升高到40000,我想上傳的文件是23KB。 – 2012-01-18 19:36:48