按钮下载.txt文件(PHP和HTML)

时间:2013-06-26 02:08:50

标签: php html

好的,我希望我的用户能够下载带有用户名的.txt文件。

我到处检查过,到目前为止我找不到我想要的东西,或者甚至可能找到它。

为了举例说明我正在尝试做的事情,这是我的代码:

<button type="button">Download All Your Keys On A .txt
<?php
$file = 'logs/$session->username.txt';

if(!file_exists($file)) die("I'm sorry, the file doesn't seem to exist.");

$type = filetype($file); // Get a date and timestamp $today = date("F j, Y, g:i a"); $time = time(); // Send file headers header("Content-type: $type"); header("Content-Disposition: attachment;filename=$filename");
header("Content-Transfer-Encoding: binary"); 
header('Pragma: no-cache'); 
header('Expires: 0'); // Send the file contents.
set_time_limit(0); 
readfile($file);
?>
</button>

我正在尝试这样做,以便当您单击该按钮时,它会强制下载配置为的.txt文件:

$file = 'logs/$session->username.txt';

很抱歉,如果这令人困惑和混乱,但我无法提出其他方式。

提前致谢!

1 个答案:

答案 0 :(得分:12)

为什么不将此代码放在单独的文件中,比如download.php

<?php
    $file = "logs/{$session->username}.txt";

    if(!file_exists($file)) die("I'm sorry, the file doesn't seem to exist.");

    $type = filetype($file);
    // Get a date and timestamp
    $today = date("F j, Y, g:i a");
    $time = time();
    // Send file headers
    header("Content-type: $type");
    header("Content-Disposition: attachment;filename={$session->username}.txt");
    header("Content-Transfer-Encoding: binary"); 
    header('Pragma: no-cache'); 
    header('Expires: 0');
    // Send the file contents.
    set_time_limit(0); 
    readfile($file);
?>

请注意,在'内使用变量时,必须将引号更改为双引号。因此,要扩展变量,请将第一行更改为:

$file = "logs/{$session->username}.txt";

我在此考虑$session->username,作为您尝试引用的变量。

在HTML中有这个:

<button type="button" onclick="location.href='download.php'">Download All Your Keys On A .txt</button>

当您单击此按钮时,它会重定向到download.php,从而启动txt文件的下载。就如此容易。但这需要你有两个文件。我不明白这里需要一个按钮。为什么不使用像这样的简单链接?

<a href="download.php">Download All Your Keys On A .txt</a>

如果需要,可以使用CSS设置样式。