ZipArchive ::检查文件扩展名

时间:2014-09-15 11:47:38

标签: php pdf unzip ziparchive

以下代码解压缩我上传的文件,并提取名为PDF的目录中的所有内容。然后它继续遍历文件并返回文件进行下载。

我的问题是我需要检查文件扩展名。我只想将PDF文件返回给用户,但是一些上传的文件有不必要的图像。

如何检查文件内容以确保解压缩文件为PDF&只有PDF会返回给用户吗?

<?php
$zip = new ZipArchive;
$res = $zip->open('/download/xxxx.zip');
if ($res === TRUE) {
  $zip->extractTo('/download/pdf/');

    for($i = 0; $i < $zip->numFiles; $i++) 
    {   
        echo '<a href="/download/pdf/' . $zip->getNameIndex($i) . '">download</a>'; 
    } 

$zip->close();

} else {
  echo 'Something went wrong :( ';
}
?>

谢谢


Dexas解决方案对我有用。如果您需要,这是代码 我在评论中添加了我已经改变的内容。

<?php

$zip = new ZipArchive;
$res = $zip->open('/download/xxxxx.zip');
if ($res === TRUE) {
  $zip->extractTo('/download/pdf/');

    for($i = 0; $i < $zip->numFiles; $i++) 
    {   
        //Load files into variable which can be used with the following... ['dirname'], ['basename'], ['extension'], ['filename']
        $path_parts = pathinfo('/download/pdf/' . $zip->getNameIndex($i));

        //If the extension is equal to PDF echo the code out
        if($path_parts['extension'] === 'pdf')
        {
            echo '<a href="/download/pdf/' . $zip->getNameIndex($i) . '">download</a>'; 
        }
    } 

$zip->close();

} else {
  echo 'Something went wrong :( ';
}

?>

1 个答案:

答案 0 :(得分:0)

您可以使用finfo

检查其MIME类型
$finfo = new finfo(FILEINFO_MIME);    
$type = $finfo->file('/path/to/file');

if($type === 'application/pdf')
{
    //do your stuff
}

对于扩展程序部分,您可以使用pathinfo

$ext = pathinfo('/path/to/file', PATHINFO_EXTENSION);

最后你应该检查两者并决定它是不是PDF。