在PHP中打开“另存为”对话框

时间:2012-12-12 11:51:33

标签: php

我有一个由表单写入的文件 index2.php

这个文件的全部内容,我使用输出缓冲区存储在变量$final_code中。

我现在希望在页面末尾添加一个“下载”按钮,这会打开一个“另存为”对话框,允许用户将此文件的源代码(即变量)保存为.txt - 但是我我很难过。

index2.php:

<?php

// Start buffering the output
ob_start();

?>

<!-- INDEX2.PHP HTML ELEMENTS HERE -->

<?php
// Store the contents of the buffer
$final_code = ob_get_contents();

// Print the contents of the buffer
ob_end_flush();
?>

<form action="savefile.php" method="post">

Happy? Save this to file: <input type="submit" name="savefile" value="Save" />

</form>

我不确定是否需要将此文件用于此文件或 savefile.php ,因此后者目前是空白的。

3 个答案:

答案 0 :(得分:4)

我认为您无法在浏览器中强制另存为文件对话框。

强制下载txt文件我执行以下操作:

header('Pragma: anytextexeptno-cache', true);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: text/plain");
header("Content-Disposition: attachment; filename=\"example.txt\"");
echo $output;
希望有所帮助。

答案 1 :(得分:1)

您需要使用标头强行下载:

 $file = 'somefile.zip';

 if(!file)
 {
     // File doesn't exist, output error
     die('file not found');
 }
 else
 {
     // Set headers
     header("Cache-Control: public");
     header("Content-Description: File Transfer");
     header("Content-Disposition: attachment; filename=$file");
     header("Content-Type: application/zip");
     header("Content-Transfer-Encoding: binary");

     // Read the file from disk
     readfile($file);
 }

示例来自: http://www.ryboe.com/tutorials/php-headers-force-download

有关详细说明,请参阅链接。

答案 2 :(得分:0)

您是否正在寻找PHP下载脚本(来自浏览器)?