PHP导出的csv文件下载无法启动?

时间:2013-03-13 12:21:55

标签: php csv export

所以我在这里有一段代码从数据库中读取数据,然后它应该提示我“打开/另存为”窗口,但事实并非如此。知道问题可能在哪里? 它会回显结果,但下载窗口不会出现。

    <?php/*
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');
header('Content-type: text/html; charset=utf-8');*/
?>
<?php


$conn = mysql_connect('localhost', 'xxxx', 'xxxx') or die(mysql_error());
mysql_select_db('nooruse', $conn) or die(mysql_error($conn));

$query = sprintf('SELECT osakond as Osakond, soetusaasta, it_number, tooteruhm, mudeli_nimetus, sn, riigivara_nr, inventaari_nr, maja, ruum, vastutaja, markus FROM norse5_proov');
$result = mysql_query($query, $conn) or die(mysql_error($conn));

header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=export.csv');

$row = mysql_fetch_assoc($result);
if ($row) {
    echocsv(array_keys($row));
}

while ($row) {
    echocsv($row);
    $row = mysql_fetch_assoc($result);
}

function echocsv($fields)
{   
    echo $query ,"<br>";
    $separator = '';
    foreach ($fields as $field) {
        if (preg_match('/\\r|\\n|,|"/', $field)) {
            $field = '"' . str_replace('"', '""', $field) . '"';
        }
        echo $separator . $field;
        $separator = ',';
    }
    echo "\r\n";
}
?>

提前致谢!

4 个答案:

答案 0 :(得分:1)

在通过header()发送标头之前,不允许任何输出。这包括第一个<?php之前的空格和?><?php之间的换行符。

答案 1 :(得分:1)

我正在使用如下所示的标题。试试吧

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header('Content-disposition: filename='.$filename.'.csv');
print $csv_output;

答案 2 :(得分:0)

使用此标题,

header('Content-type: application/force-download');

它会起作用。

答案 3 :(得分:0)

尝试使用这些标题:

header("Content-Description: Download File");
header("Content-Disposition: attachment; filename=whatever.csv");
header("Content-Type: text/plain");
header("Content-Length: ".strlen($output));

,其中     $输出

是回显输出的捕获变量。