2012-08-10 83 views
0

我有下面的源代码(PHP)使用下载CSV文件HTML源代码下载,而不是CSV文件

$file_name = date("YmdHis") . ".csv"; 


Header('Content-Type: text/csv'); 
Header("Content-disposition: attachment; filename=${file_name }"); 
Header("Content-type: application/octet-stream; name=${file_name }"); 

header('Pragma: 1'); 
header('Cache-control: private, max-age=60, pre-check=30'); 
session_cache_limiter('private_no_expire'); 

$csv = $header.$contents; 

if (mb_detect_encoding($csv) == 'SJIS-win') { 
    $csv = mb_convert_encoding($csv, 'UTF-8', 'SJIS-win'); 
} 
echo $csv; 

exit; 

随着$头和$内容是从数据库中读取。 此源与Firefox,IE工作正常,但我与Quihoo360(中国的浏览器称为:360安全浏览器)有问题。它不下载从数据库读取的内容的CSV文件,而是下载csv,内容是显示页面的HTML源。

有人可以让我知道如何解决这个问题。

非常感谢。

+0

您只需要一个Content-Type标头。将第一个更改为text/plain并删除第三个。 – 2012-08-10 13:02:05

回答

2

而不是你的内容类型,尝试将其设置为:

Content-Type: text/plain 

content types一个好名单。

编辑:尝试这在你的PHP:

header('Content-Type: application/csv'); 
header('Content-Disposition: attachment; filename=example.csv'); 
header('Pragma: no-cache'); 
// echo out the csv file 
+0

感谢Fluffeh,我试过了,但似乎这个问题不能用这个 – Ichigo 2012-08-10 13:21:22

+0

@PhuNguyen来解决请参阅编辑。 – Fluffeh 2012-08-10 13:29:08

+0

嗨Fluffeh,我试过但得到了同样的结果。我确认并看到了正确选择的数据,似乎不是从数据库中回显选定的内容,而是回显用于在屏幕上显示的返回HTML源代码 – Ichigo 2012-08-13 11:33:19

0

使用的内容类型的application/force-download迫使浏览器下载文件。我想这就是你要求的,对吧?

+0

嗨siidheesh,文件下载成功但内容不正确。它不是从DB中选择的内容,而是下载显示页面的HTML源代码 – Ichigo 2012-08-10 13:12:59