不是force_download与codeigniter中的图像和pdf文件

时间:2016-10-02 09:33:40

标签: php .htaccess codeigniter force-download

朋友您好我有关于force_download功能的一个问题,我在网站上有一个上传表单,我正在使用此功能下载我上传的数据并且可以正常工作

public function download($file)
    {
        force_download('./uploads/'.$file, NULL);
    }

但你知道如果你不想下载它,可以在navegator中直接看到pdf,png,jpg文件但是如果我使用这个函数所有文件都被下载了,我怎么能得到它?

我尝试使用直接链接到我的上传文件夹,但它可能是因为我有一个.htaccess文件拒绝访问,以防止用户登录只能下载内容。

1 个答案:

答案 0 :(得分:1)

正如我已经写过的那样,在下载/预览代码之前检查文件扩展名,在if elseif else或甚至更好switch case块中进行检查。类似的东西:

public function download($file)
{
    //get the file extension
    $info = new SplFileInfo($file);
    //var_dump($info->getExtension());

    switch ($info->getExtension()) {
        case 'pdf':
        case 'png':
        case 'jpg':
            $contentDisposition = 'inline';
            break;
        default:
            $contentDisposition = 'attachment';
    }

    if (file_exists($file)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/pdf');
        // change inline to attachment if you want to download it instead
        header('Content-Disposition: '.$contentDisposition.'; filename="'.basename($file).'"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($file));
        readfile($file);
    }
    else echo "Not a file";
}