2013-12-11 55 views
-1

,所以我有這樣的形式:如何檢查是否在文件輸入選擇什麼

<form enctype="multipart/form-data" action="profile.php" method="post"> 
<input type="file" name="pics"><br> 
<input type="submit" name="submitpic"> 
</form> 

試圖確定是否真正存在一個選擇的文件似乎是$ _ POST [「圖片」]; 不工作,或沒有得到一個價值。

if(isset($_POST['submitpic'])){ 
    if($_POST['pics']!=NULL){ 
     $dir = 'id_data/'; 
     $pic_ext = pathinfo($_FILES['pics']['name']); 
     $pic_unique_id = $userid; 
     $pic_name = $pic_unique_id.".".$pic_ext['extension']; 

     if(move_uploaded_file($_FILES['pics']['tmp_name'],"$dir/$pic_name")){ 
      echo "yes"; 
     } 
    } 
} 
?> 

是否有另一種方法來檢查文件是否被選中? 謝謝!當文件被移動

+0

它的文件數組中,下面你正在使用它......你的語法是錯誤的,你缺少')'if語句 –

回答

0

您可以檢查文件是否是在POST請求與

isset($_FILES['pics']) 

否則

move_uploaded_file($_FILES['pics']['tmp_name'],"$dir/$pic_name") 

是真實的,因此,如果文件被上傳,但由於某種原因沒有移動(如由於目錄權限),那麼它將返回false。

+0

你有甚至嘗試你的代碼返回? –

+0

究竟哪個部分? –

+0

isset():)) –

0

出於測試目的,我會告訴下面的代碼,它是空的提交後輸出:

<form enctype="multipart/form-data" action="" method="post"> 
<input type="file" name="pics"><br> 
<input type="submit" name="submitpic"> 
</form> 

<?php 
var_dump($_POST); 
var_dump($_FILES); 
var_dump(isset($_FILES['pics'])); 
var_dump(empty($_FILES['pics']['name'])); 

array (size=1) 
    'submitpic' => string 'Submit Query' (length=12) 

array (size=1) 
    'pics' => 
    array (size=5) 
     'name' => string '' (length=0) 
     'type' => string '' (length=0) 
     'tmp_name' => string '' (length=0) 
     'error' => int 4 
     'size' => int 0 

boolean true 

boolean true 

所以pics$_FILES數組中,它總是如此檢查isset()即使它是空的。你需要檢查name是空的。那麼你可以這樣做:

if(!empty($_FILES['pics']['name']))而不是if($_POST['pics']!=NULL)。但我敢打賭,你還需要更多的驗證。

0

由於您正在提交'文件',因此您必須使用$_FILES檢查來檢查您的後端。具體方法如下:

if(isset($_FILE)) 
{ 
    //Enter your code here. 
} 
+0

你甚至試過你的代碼返回嗎? –

+0

根據我對PHP的理解,只有設置了$ _FILE屬性,條件纔會執行。 糾正我,如果我在這裏錯了。 –

+1

這裏的問題是在提交帶有空值的表單後,數組$ _FILE將存在,並且'pics'將存在於其中。甚至更多的是,$ _FILE []的行爲將把鍵設置爲''_FILE ['pics]'like'name'等,無論是否沒有發佈文件名 –

相關問題