我知道(从这个问题的答案:.rar, .zip files MIME Type)大多数人在 PHP 中检查 zip 文件为application/zip
or application/octet-stream
,但我对此有几个问题:
- 检查是否安全
application/octet-stream
(因为它application/octet-stream
可以用来描述更多的文件类型,而不仅仅是 zip!)。我知道我也可以用其他方式检查文件,但我认为我应该尽量让一切都尽可能简单 - 我尝试尽可能多地检查不同的实际拉链类型;但是,有些会产生一些意想不到的结果。我发现 1 的 mime-type 是
application/x-external-editor
,但是 PHP 在处理它时遇到了问题(尽管我得到的唯一错误是Warning: ZipArchive::close() [ziparchive.close]: Invalid or unitialized Zip object
) - 这在任何地方都有记录吗?是否有x-
PHP 可以处理的实际 mimetype 列表?
编辑
回答以下问题:
- 我通过 using 检查 mime 类型
$_FILES['fileatt']['type']
,但 usingmime_content_type()
给出了相同的结果。不同的 zip 文件似乎是以下任何一种:'application/zip'
,'application/x-compressed'
,'application/x-zip-compressed'
,'application/x-compressed'
,'multipart/x-zip'
. 我不明白为什么当 mime 类型被检测为application/x-external-editor
. - 我已经安装了 zip 扩展程序,并且在上传 zip 文件时,我正在从 zip 文件中提取所有文件。我没想过检查错误。
我还发现了另一件事我不太明白:当我将以下代码与 PHP 读取为的文件一起使用时application/x-external-editor
:
if($zip->open($_FILES[fileatt]['tmp_name'])===TRUE)
{
echo "success";
} else {
echo "error";
}
打印“错误”,但检查文件类型为
$res = $zip->open($_FILES[fileatt]['tmp_name']);
if($res)
{
echo "success";
} else {
echo "error";
}
打印“成功”;在这段代码中,我假设布尔值有效地使用==
, not ===
,但是为什么这会有所作为呢?
错误:
$res = $zip->open($_FILES[fileatt]['tmp_name']);
if($res===TRUE)
{
echo "success";
} else {
echo $res;
}
打印- 19 指的是19
哪个错误(http://uk3.php.net/manual/en/ziparchive.open.php )?!