下载文件不知道扩展名


download file without knowing extension

>我有一个下载文件的脚本:

public function getResponse($file)
{
    $response = new Response();
    $ext = pathinfo($file, PATHINFO_EXTENSION);
    var_dump($ext);
    //$file .= '.pdf';
    if (file_exists($file)) {
        $fp = fopen($file, "rb");
        $str = stream_get_contents($fp);
        fclose($fp);
        $response->headers->set('Content-Description','File Transfer');
        $response->headers->set('Content-Type','application/octet-stream');
        $response->headers->set('Content-Disposition','attachment; filename='.basename($file));
        $response->headers->set('Content-Transfer-Encoding','binary');
        $response->headers->set('Expires','0');
        $response->headers->set('Cache-Control','must-revalidate');
        $response->headers->set('Pragma','public');
        $response->headers->set('Content-Length',filesize($file));
        $response->setContent($str);
    }
    return $response;
}

但是我有一个问题,我的var$file上没有扩展名,如果我添加扩展名,代码就可以工作。有没有办法下载文件猜测扩展名?

谢谢。

看看glob()函数。

这将允许您按模式搜索文件。所以像这样:

$found = glob($file . ".*");

意识到您可能有多个匹配项,您需要查看返回的数组。

if(count($found) == 1) {
   // One file found. Life is good.
   $filename = $found[0];
} else if(count($found) > 1) {
   // Multiple files matched! Which one should we download? Zip them all up?
} else {
   // No files found
}