2012-10-19 175 views
0

我的網站上有一項功能,用戶可以在其中創建相冊來更好地組織照片。他們可以上傳新照片,也可以從已上傳的照片中進行選擇。 在我的PHP中,如果他們上傳了任何新的文件,我的代碼會通過他們上傳的文件。它工作的很好,但我只希望它能夠在他們實際上傳新照片時工作。現在,即使他們選擇了已上傳的舊照片,它也會運行。我使用HTML5「多重」屬性,以便他們可以上傳多張照片。在我的PHP中,如何編寫條件if語句以僅在上載照片時運行此代碼?使用PHP if語句

foreach ($_FILES['uploads']['name'] as $key => $file) { 
    $time= time(); 
    $target= UPLOADPATH . $time . $file; 
    move_uploaded_file($_FILES['uploads']['tmp_name'][$key], $target); 
} 

我已經嘗試使用:

if ($_FILES['uploads']['size'] != 0) 
if ($_FILES != 0) 
if ($_FILES['upload']['name'] !=0) 

但是,到目前爲止還沒有成功。我能做什麼?我究竟做錯了什麼?

由於

UPDATE

我結束了一個變量設置爲$ _FILES數組中的第一元素的值。

像這樣:

$file_test= $_FILES['uploads']['size']['0']; 

然後我用它在測試condion:

($file_test != 0) { 
    // run the code; 
} 

感謝大家的幫助!

+0

重新安排你的$ _FILES數組'如果(!空($ _ FILES))'應該做的伎倆。 – raina77ow

+0

'empty()'不適用於文件。 'enctype'將它包含在帖子中,無論它是否包含字節。 – AlienWebguy

+0

@AlienWebguy那我該怎麼辦? – user1759682

回答

0
if(!empty($_FILES)){ 
    // you've got files?!?! 
} 

幸運的猜測在這裏,真的不明白你的問題。

+0

這不起作用。 – AlienWebguy

+0

@AlienWebguy如果沒有文件上傳,$ _FILES是一個空數組。我不明白這個問題...... – CodeAngry

2

我想你已經上傳的照片存儲在任何地方,那麼你可以使用getimagesize()函數(PHP Manual)的組合來檢查上傳的文件是否是圖像。然後使用md5_file()函數(PHP Manual)比較上傳文件的MD5哈希值與存儲的值。如果將它們存儲在數據庫中,則可能會提高性能以將每個文件的MD5直接存儲在自己的字段中,因此您可以輕鬆地在數據庫中查詢現有的MD5散列值。

希望這會有所幫助。

+0

+1瞭解提問者需要什麼。 –

1

首先您必須使用此功能

function rearrange($arr){ 
     foreach($arr as $key => $items){ 
      foreach($items as $i => $val){ 
       $array[$i][$key] = $val; 
      } 
     } 
     return $array; 
} 

$files = rearrange($_FILES['uploads']); 

//Then do the foreach loop upload 

if(!empty($files)) 
{ 

    foreach ($files as $file) { 
    // Check the file size inside the foreach loop 
    if($file['size'] > 0) 
    { 
     $time= time(); 
     $target= UPLOADPATH . $time . $file['name']; 
     move_uploaded_file($file['tmp_name'], $target); 
    } 
    } 

} 
+0

輸入標籤的名稱屬性必須上傳[] –