2013-11-09 82 views
0

之前,我學習PHP的,但我不通過自己獲得正確的方式。我希望有Img總是需要的(並且我在表單輸入required屬性中檢查這個),但是我可以決定是否上傳PDF。如果我不選擇兩個,腳本不會繼續。檢查PDF文件或圖片上傳

我有這樣的:

// image select from form 
    $img = basename($_FILES['img']['name']); 
    $allow_img = array('jpg', 'png', 'jpeg'); 
    $ext_img = explode('.', strtolower($_FILES['img']['name'])); 
    $type_img= end($ext_img); 

    //pdf select from form 
    $pdf = basename($_FILES['pdf']['name']); 
    $allow_pdf = array('pdf'); 
    $ext_pdf = explode('.', strtolower($_FILES['pdf']['name'])); 
    $type_pdf= end($ext_pdf); 

    if ($img || $pdf) { 
     if(!in_array($type_img, $allow_img) || !in_array($type_pdf, $allow_pdf)) { 
     echo "<p><a href='../admin.php'><img style='border:none;' src='../../img/arrow-left.png' /></a>Only jpg, png, jpeg and PDF.</p>";  
     } 
    } 
+0

也請張貼corresponsing HTML使用上面的編輯按鈕編輯問題來標記標記。 – arkascha

+0

哦,這是什麼意思:「腳本不能繼續」? – arkascha

+0

不繼續意味着,如果我不選擇IMG和PDF它不裝上MySQL,但我想只檢查文件是否爲JPG,PDF等...如果用戶不想上傳IMG或pdf我想要的腳本總是不斷在MySQL裝載我沒有張貼東陽問題形式的其他部分只是這個上傳 – Cloud

回答

0

需要在此的JavaScript。

發送之前的回報,你必須檢查文件的類型。

+0

是的JavaScript!謝謝! – Cloud

0

很有可能是第二個basename()調用崩潰,因爲沒有上傳pdf文件時不存在$_FILES['pdf']。但是,你甚至不會在這裏檢查錯誤...看看http服務器錯誤日誌文件,很可能你會在那裏看到錯誤。

這就是說:總是看看日誌文件,如果有意外發生。在使用它之前,總是測試一個變量存在。並且在調用某個可能不會返回所期望的函數時總是進行錯誤檢查。

1

在這裏你去一個超快速的方法來做到這一點:

$filename = $_FILES['img']['name']; 
$ext = pathinfo($filename, PATHINFO_EXTENSION); 

// allowed extensions 
$allowed = array('jpeg', 'png', 'jpeg', 'gif'); 

if (in_array($ext, $allowed)) { 
    echo "<p><a href='../admin.php'><img style='border:none;' src='../../img/arrow-left.png' /></a>Only jpg, png, jpeg and PDF.</p>";  
} 

就是這樣:)

0

您可以使用pathinfo()內置PHP函數,

$File = $_FILES['image']['name']; 
$Infos = pathinfo($File); 
echo $extension = $info[extension]; 

echo "<pre>"; print_r($Infos); echo "</pre>"; 
$extension = strtolower($extension); 
if($extension=='pdf'){ 
    // do your stuff 
} 
+0

thx phpinfo()好多了!!但我如何讓用戶決定不卸載img或pdf?如果php檢查擴展名,其他人的mysql的上傳形成部分格式(名稱,作業等)。 – Cloud