所以我在这里有一段代码从数据库中读取数据,然后它应该提示我“打开/另存为”窗口,但事实并非如此。知道问题可能在哪里? 它会回显结果,但下载窗口不会出现。
<?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";
}
?>
提前致谢!
答案 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));
,其中 $输出
是回显输出的捕获变量。