2014-08-27 68 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