簡體   English   中英

PHP中的擴展驗證

[英]Extension validation in php

我一直在嘗試並嘗試使用此代碼來嘗試獲取文件擴展名並有條件地對其進行檢查,但是由於文件放置在流中,所以我看不到$ ext發生了什么。

任何人都可以查明這里出了什么問題嗎? 它只是為dropzone.js處理上傳文件。

if (!empty($_FILES)) {

    $tempFile = $_FILES['file']['tmp_name'];          //3             

    $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;  //4

    $targetFile =  $targetPath. $_FILES['file']['name'];  //5

    $ext = end(explode(".", $_FILES['file']['tmp_name']));

    if(filesize($tempFile) < 6000000 and $ext == "png"){
        move_uploaded_file($tempFile,$targetFile); //6
    }

}

您正在使用tmp_name變量獲取擴展名,該擴展名將始終為您提供擴展名為.tmp的文件。

代替

$ext = end(explode(".", $_FILES['file']['tmp_name']));

用這個 :

$ext = end(explode(".", $_FILES['file']['name']));

更新:-但是最好通過檢查其mime時間來驗證文件類型(如@castis所說),因為某些用戶可能會使用某些擴展名重命名其文件並上傳它。

下面是一個驗證文本文件的代碼示例,您可以使用類似的方法來驗證圖像類型。

$file_type =  mime_content_type($_FILES['img']['tmp_name']);

if($file_type == 'text/plain'){
    echo "file type is text";
}
?>

<form action="#" method="post" enctype="multipart/form-data">
  <input type="file" name="img">
  <input type="submit" value="Submit">
</form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM