以下代码有两个目的
1)我在我的服务器上将文本文件保存在名为“backup_db”的文件夹中,当我打开包含所有数据的文本文件时,它的工作正常意味着
2)同时我也让这个文件可供用户下载,以便他可以自己下载并可以将其保存在他的硬盘上,并根据我的意愿下载但不幸的是.txt文件保存在我的硬盘是,当它打开它的空,我不知道为什么请帮帮我
//保存文件
$handle = fopen('backup_db/db-backup-'.date('d-m-Y_H-i-s').'-'.(md5(implode(',',$tables))).'.txt','w+');
$rr = fwrite($handle,$re);
//fclose($handle);
$ww = "db_backup".$rr.".txt";
//$handle = "";
header('Content-Disposition: attachment; filename=' . urlencode($ww));
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Type: application/download');
header('Content-Description: File Transfer');}}
答案 0 :(得分:2)
您只设置HTTP标头但未将文件写入响应正文。使用fpassthru()
或readfile()
将文件内容直接写入回复。
示例(摘自php.net)
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
flush();
readfile($file);
exit;
}
?>
顺便说一句:
除非将header()
的第二个参数设置为false,否则多次设置相同的标题只会覆盖之前设置的值。
您的代码
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Type: application/download');
产生以下标题:
Content-Type: application/download
答案 1 :(得分:1)
在标题中发送文件名只会为用户提供建议的文件名。尝试回显文件的内容。
答案 2 :(得分:0)
检查 例如:
$filename = urlencode($fileName); //download.txt
header("Content-Disposition: attachment; filename=\"" . $filename. "\";" );
答案 3 :(得分:0)
你应该添加
header("Content-Length: $size")
其中$size
是文件大小(以字节为单位)。