已解决,由于引导程序已知问题(Nesting <a> inside <button> doesn't work in Firefox)。
我试图简单地强制下载一个文件,它在Chrome&amp; Safari,但不适用于Firefox。
我已经下载了.php文件来下载我的文件(用于&#34; a href&#34;):
<?php
$filename="myFile.pdf";
$file="../content/$filename";
$len = filesize($file); // Calculate File Size
if (ob_get_contents()) ob_end_clean();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type:application/pdf"); // Send type of file
$header="Content-Disposition: attachment; filename=$filename;"; // Send File Name
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len); // Send File Size
@readfile($file);
exit;
?>
它用于:
<a class="myFileClass" href="download.php">Download</a>
所以使用Chrome&amp; Safari,当我点击下载链接时,文件被下载了! 但是对于Firefox,没有任何反应。
对这个好奇的问题有什么看法吗?
先谢谢。
答案 0 :(得分:4)
$header="Content-Disposition: attachment; filename=$filename;";
这是错误的,请使用引号作为文件名。它应该像下面的
header('Content-Disposition: attachment; filename="' . basename($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, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
答案 1 :(得分:-2)
上面带有基本名称引用等的示例会下载一个空文件。
下面的代码返回数据,其中html数据也包含在Wordpress调用输出中,但仅包含在Wordpress之外的干净数据。
这两个代码只在IE中生成下载调用。
$filename = $db_record.'_'.date('Y-m-d').'.csv';
header('Pragma: public');
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the Past
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='. $filename);
Readfile($filename);