code.php
$code = $_GET["code"];
$file = 'code/'.$code.'.html';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
生成的下载文件的网址:
http://www.example.com/code.php?code=yoursite.com_nbsp63ibrf
好吧,我想强制下载html文件,上面的代码无效,只是在浏览器上预览文件!
答案 0 :(得分:1)
file_exists()返回false。使用文档根目录更改路径:
$code = $_GET["code"];
$file = $_SERVER['DOCUMENT_ROOT'] . '/code/' . $code . '.html'; // set your path from document root.
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
答案 1 :(得分:0)
实际上这是不可能的。 如果文件应该下载,浏览器可以自己决定。
你可以去的最远的是发送内容处置标题。
答案 2 :(得分:0)
尝试更改内容类型以匹配文件类型并将传输编码设置为二进制文件:
header('Content-Transfer-Encoding: binary');
header('Content-Type: text/html');
答案 3 :(得分:0)
试试这个
all_born.push('ALL');
all_name.push('ALL');
答案 4 :(得分:0)
不幸的是,这是一个编码问题。我将code.php
编码从UTF-8更改为UTF-8而没有BOM,然后问题解决了。感谢所有的答案和帮助。我忘了PHP标头仅适用于没有BOM的UTF-8。