2012-03-14 46 views
1

我有一個與我的文件上傳的問題,它工作正常,一切都好,但我得到更新我的數據,我想改變一切,除了圖像和點擊提交,我得到無效圖像消息,我沒有更新圖像,所以文件輸入文本框中沒有文件,有沒有辦法繞過這個?PHP文件上傳,如果留爲空

if (($_FILES["image"]["type"] == "image/jpeg") || ($_FILES["image"]["type"] == "image/pjpeg")){ 
      if ($_FILES["image"]["error"] > 0){ 
       echo $_FILES["image"]["error"]; 
      }else{ 
       move_uploaded_file($_FILES["image"]["tmp_name"], 
       "../upload/CV_1_" . date("Ymd") . $_FILES["image"]["name"]);                  
       $class->update($id, $text, $image); 
       echo "<div style='padding-left:50px'><strong>Updated!</strong></div>"; 
      } 
     }else{ 
      echo "<div style='padding-left:50px'><strong>Invalid Image!</strong></div>"; 
     } 

什麼上面的代碼確實是拿那個文件,看看它的圖像,如果有任何錯誤,告訴他們,然後將文件移動到正確的文件夾,並更新我的數據庫。

這裏是形式...

<form action="CV.php?action=updatesubmit" method="post" enctype="multipart/form-data"> 
<input type="hidden" value="<?php echo $array['id']; ?>" name="id" /> 
<p> 
<label for="text" style="vertical-align:top;">Text</label> 
<textarea name="text" id="text" cols="70" rows="20"><?php echo $array['text']; ?></textarea> 
</p> 

<p> 
<label for="image">Image</label> 
<input type="file" name="image" id="image" value="<?php echo $array['image']; ?>" /> 
</p> 

<p> 
<input type="submit" name="submit" id="submit" value="Update" /> 
</p> 

</form> 

我希望我是有道理的,我有綁一些東西的習慣,這聽起來不錯,但其他人不會知道我在說什麼。

與我的代碼玩,這是建議,但它不工作,我可能做錯了什麼。

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

    if (($_FILES["image"]["type"] == "image/jpeg") || ($_FILES["image"]["type"] == "image/pjpeg")){ 
     if ($_FILES["image"]["error"] > 0){ 
      echo $_FILES["image"]["error"]; 
     }else{ 
      move_uploaded_file($_FILES["image"]["tmp_name"], 
      "../upload/CV_1_" . date("Ymd") . $_FILES["image"]["name"]);  
} 
      $class->update($id, $text, $image); 
      echo "<div style='padding-left:50px'><strong>Updated!</strong></div>"; 
     } 
    }else{ 
     echo "<div style='padding-left:50px'><strong>Invalid Image!</strong></div>"; 
    } 

回答

4

您需要檢查的實際上傳你做任何事情與上傳數據之前:

if ($_FILES['image']['error'] === UPLOAD_ERR_OK) { 
    ... got an upload ... 
} 
+0

我仍然收到消息「無效圖像」我將編輯我的問題,以便您可以看到我的所作所爲 – user1269625 2012-03-14 18:10:39

+0

執行'var_dump($ _ FILES)'來查看會發生什麼。腳本中有許多OTHER問題與此同時,在上傳文件之前,相信用戶不要簡單地執行'ren nastyvirus.exe cutekittens.jpg'。 – 2012-03-14 18:19:29

+0

讓它工作......感謝MarcB對你的幫助:) – user1269625 2012-03-14 18:25:42

1

只要把if(isset($_FILES['image']))圍繞整個街區。如果沒有圖像上傳,文件條目將不存在。

+0

測試了這一點,現在 – user1269625 2012-03-14 17:53:05

+1

假。無論文件是否上傳,[['image']'條目仍然存在。你必須檢查'['error']'值。 '沒有文件上傳'將是錯誤代碼4/UPLOAD_ERR_NO_FILE。 – 2012-03-14 18:00:55

+0

所以如果是這樣的錯誤,那麼繼續排序的事情? – user1269625 2012-03-14 18:05:24

0

它會提交當且僅當圖像上傳。

<?php 
if ($_FILES["image"]["tmp_name"] && $_FILES["file"]["error"] < 0){ 
    if (($_FILES["image"]["type"] == "image/jpeg") || ($_FILES["image"]["type"] == "image/pjpeg")){ 
       if ($_FILES["image"]["error"] > 0){ 
        echo $_FILES["image"]["error"]; 
       }else{ 
        move_uploaded_file($_FILES["image"]["tmp_name"], 
        "../upload/CV_1_" . date("Ymd") . $_FILES["image"]["name"]);                  
        $class->update($id, $text, $image); 
        echo "<div style='padding-left:50px'><strong>Updated!</strong></div>"; 
       } 
      }else{ 
       echo "<div style='padding-left:50px'><strong>Invalid Image!</strong></div>"; 
      } 
} 
?> 
+1

壞主意。部分上傳將仍然有一個tmp_name。檢查'['error']'這會告訴你上傳的真實狀態。 – 2012-03-14 18:00:12

+0

@MarcB謝謝.. – Milap 2012-03-14 18:02:56