【问题标题】:ZipArchive:: check file extensionZipArchive:: 检查文件扩展名
【发布时间】:2014-11-08 22:33:35
【问题描述】:

以下代码解压缩我上传的文件并将所有内容提取到一个名为 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 :( ';
}
?>

谢谢


得克萨斯解决方案对我有用。如果需要,这里是代码 我添加了 cmets 以显示我所做的更改。

<?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 :( ';
}

?>

【问题讨论】:

    标签: php pdf unzip ziparchive


    【解决方案1】:

    您可以使用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。

    【讨论】:

    • 谢谢,太好了。解决方案 = echo $path_parts['extension']; if($path_parts['extension'] === 'pdf'){ // 在这里做点什么 }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2012-06-11
    • 2011-11-25
    • 2018-05-29
    • 2016-09-11
    • 2013-02-27
    相关资源
    最近更新 更多