[英]Limiting file upload type
簡單的問題。 有沒有辦法在上傳時只允許txt文件? 我環顧四周,所有我發現的是text/php
,它允許PHP。
$uploaded_type=="text/php
當您使用PHP上傳文件時,它存儲在$ _FILES數組中。 其中有一個名為“type”的鍵,其文件的mime類型為EG $_FILES['file']['type']
所以要檢查它是你做的txt文件
if($_FILES['file']['type'] == 'text/plain'){
//Do stuff with it.
}
這里解釋得非常好。 此外,不要依賴文件擴展,這是非常不可靠的。
簡單地說:沒有辦法。 瀏覽器不一致支持文件上載字段中的類型限制器(已計划的AFAIK,甚至已集成到HTML標准中,但最好幾乎沒有實現)。 文件擴展名和mime類型信息都是用戶提供的,因此不可信任。
您實際上只能嘗試解析文件並查看它是否符合您期望的任何格式,這是唯一可靠的方法。 您需要注意的是惡意格式錯誤的文件導致的緩沖區溢出等問題。 如果你想要的只是文本文件,那可能不是什么大問題。
您可以檢查上傳文件的mime類型。 在codeIgniter中,此代碼用於上載庫:
$this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);
變量$this->file_type
然后用於檢查上載配置,以查看上載的文件是否是允許的類型。 您可以在CodeIgniter上載庫文件中看到完整的代碼。
您需要檢查上傳文件的文件擴展名。
有Pear HttpUpload,它支持這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.