2011-06-08 40 views
0

我使用php上传功能上传我的界面中的文件。我在浏览器中使用firefox-3.6.11。我正在上传Excel表格。我试图让type.I有以下方法测试的文件类型上传的文件,php中的文件上传

$Type = $HTTP_POST_FILES['TS_FILE']['type']; 
$Data = split ("/", $Type,2) ; 

if("$Data[1]" != "vnd.ms-excel" && $Data[1]!="octet-stream" && "$Data[1]"!="xls" && "$Data[1]" != "excel") 
{ 
    echo "<script> //alert ('inside alert') ; 
     alert ('The selected file is not in .xls format. Please select proper file.') ; 
     </script>"; 
    exit; 
} 

它工作正常。但是有一段时间,即使我上传了Excel表格,我也收到了代码中提到的警告消息。我不知道确切的问题是什么。有没有其他的Excel文件类型可用于Firefox?

+0

也许'var_dump'或$ Data的某些日志会有帮助吗? (它可以是xlsx ???) – kpower 2011-06-08 07:41:46

回答

-1

我不知道错误在代码中的位置,因为我没有上传文件。

我用百达上W3Schools的http://w3schools.com/php/php_file_upload.asp

的例子,然后进行编辑它在很大程度上使其处理正确类型的文件(至极是你似乎被卡住)。

你想检查文件类型的方式是使用$_POST['file']['type'] 我看到你确实在使用它,但可能不正确。

你可以看看W3S他们如何对图像进行文件类型检查,这也可以用于xls。

找出你的浏览器发送的文件类型的方法是简单地trigger_error("File type is: ".$_POST['file']['type']);

现在你可以让一个if语句,因为他们曾经在W3S使用文件键入报trigger_error验证文件。

请注意,某些浏览器(尤其是IE)可能会使用不同的名称。

(对不起,不能够给你一个答案,你自己的脚本,但也许有一些事情我说,这可能有助于)

0

$_FILES['file']['type']值是由浏览器发送,浏览器获得这来自底层操作系统的价值。如果我配置Windows并告诉它.xls有mime类型image/jpeg,我的浏览器(无论是Firefox,IE还是其他)会将该类型发送到您的应用程序。

所以,基本上,不要依靠$_FILES['file']['type']做验证。获取使用php's fileinfo该值自己的服务器端:

$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension 
$type = finfo_file($finfo, $_FILES['file']['tmpname']); 

此外,你可以从这个网站的Excel文件使用的MIME类型的列表:编辑http://filext.com/file-extension/XLS

:中$_FILES代替$_SERVER(抱歉,这是早这里)