2014-08-27 37 views
0

我想讓用戶上傳保存爲.msg文件的Outlook電子郵件,但是我的錯誤系統顯示這些郵件不屬於我允許的一部分。我嘗試了3種不同的展望類型,但無濟於事。什麼是正確的MIME類型?PHP - 上傳Outlook電子郵件

這是我縮短的代碼。

$whitelist = array('application/outlook','application/msoutlook','application/vnd.ms-outlook'); 
$errors = false; 

if (isset($_POST['submit'])) { 

$uniqueid = time().$_SESSION['webuserid']; 
$description = htmlspecialchars($_POST['description']); 

if (empty($_FILES['file']['name'])) { 

$message = "<b> * No File Selected</b>"; $errors = true; } 

if ($_FILES['file']['size'] > 5000000 && !empty($_FILES['file']['name'])) { 

$message = "<b> * 5MB Max Upload</b>"; $errors = true; } 

if (!in_array($_FILES['file']['type'], $whitelist) && !empty($_FILES['file']['name'])) { 

$message = "<b> * PDF, Excel, Outlook Message, Word Format Only</b>"; $errors = true; } 

感謝

回答

1

那麼你爲什麼不var_dump($_FILES['file']['type']);.msg文件,看看它說什麼?然後將其添加到您的$白名單。

你可能會發現MIME類型爲應用/ vnd.msoutlook

+0

Unfortunetely應用/ vnd.msoutlook沒有工作,但表現出的var_dump「應用程序/八位字節流」作爲類型。感謝您的幫助 – bass71982 2014-08-27 10:35:41

+0

只要注意'application/octet-stream'是您可能不希望允許的整個文件類的MIME類型(例如.exe)或任何無法確定MIME類型的文件對於。在這裏看到更多的信息:http://stackoverflow.com/questions/20508788/do-i-need-content-type-application-octet-stream-for-file-download因此,你可能想要添加文件擴展名檢查以防萬一。請注意文件擴展名不是一個安全的文件檢查它自己。 – TunaMaxx 2014-08-28 23:21:58

+0

檢查'$ _FILES ['file'] ['type']'不是一種安全的方法,因爲該類型是由瀏覽器設置的,並且很容易被欺騙。更安全(可靠)的方法是使用PHP的fileinfo擴展。看到這裏的一些例子:http://php.net/manual/en/function.finfo-open.php – alexpls 2015-01-15 00:24:39