文件在浏览器上显示而不是在YII网站上下载

时间:2013-09-06 03:57:20

标签: php yii http-headers download mysqldump

文件在浏览器中显示而不是下载。它以前工作过。我对项目的其他部分做了一些更改。但是我没有触及这个功能,我不知道发生了什么。请帮帮我。

         $filename=date("d-m-ys").".sql";
        $handle = fopen($filepath."/".date("d-m-ys").".sql", 'w+');
        fwrite($handle, $return);
        fclose($handle);

        $bits = @file_get_contents($filepath."/".date("d-m-ys").".sql");
        header("Content-type: application/sql");
        header('Content-Disposition: attachment; filename="'.$filename.'"');
        print $bits;

2 个答案:

答案 0 :(得分:0)

我不完全确定会导致此功能停止运行的原因,除非您更改了PHP版本,但请尝试以下操作:

像这样设置Content-Length标头:

header("Content-Length: ".filesize($filepath."/".date("d-m-ys").".sql"));

你可以利用readfile来避免这样的内存问题,它会读取一个文件并直接输出到输出流。

  readfile($filepath."/".date("d-m-ys").".sql");

另一种可能性是,在设置这些标头之前,您正在输出数据的应用程序中的其他位置 - 这将导致问题,因为标头只能在任何输出之前设置。

答案 1 :(得分:0)

您可以尝试使用htaccess强制下载,

<FilesMatch "\.(?i:sql)$">
 ForceType application/octet-stream
 Header set Content-Disposition attachment
</FilesMatch>