0

我需要直接在页面上编写和创建一个 .html 文件,然后让用户将其下载到他的本地机器上。.html 文件将包含来自数据库请求的完整操作系统信息。它看起来像这样:

<?php
    $content = "<!DOCTYPE html><html lang="en"><head></head><body>";
    $content .= "<div>Hello World</div>";
    $content .= get_all_contents_from_db();
    $content .= "</body></html>";
?>

我看到了一个代码,它可以让您使用以下代码将您看到的页面下载到一个文件中:

    <?php 
    if(isset($_POST['download']))
    {
        header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
        header("Content-Type: application/force-download");
        header("Content-Length: " . filesize($File));
        header("Connection: close");
    }
    ?>
So the question is: How do I create a downloadable html file using php?

**PART 2**
<form method="POST" action=''>
    <button name="download">Download File</button>
</form>
<?php 

    $content = "<!DOCTYPE html><html lang=\"en\"><head></head><body>";
    $content .= "<div>Hello World</div>";
    $content .= "</body></html>";

    if(isset($_POST['download'])){

        echo $content;
        header("Content-Disposition: attachment; filename=\"slideshow.html\"");
        header("Content-Length: " . filesize($content));
        echo $content;
    }
?>

输出

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
    <div class="main">Dashboard</br>
        <form method="POST" action=''>
            <button name="download">Download File</button>
        </form>
        <!DOCTYPE html><html lang="en"><head></head><body><div>Hello World</div></body></html><!DOCTYPE html><html lang="en"><head></head><body><div>Hello World</div></body></html>            </div>
    </div>
    </body>
</html>
4

2 回答 2

3
header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");

修复此问题,以便您从某个合理的地方指定文件名(而不是尝试根据未定义变量的硬盘上不存在的文件的名称来计算它)。

header("Content-Type: application/force-download");

摆脱这个。对于不知道 Content-Disposition 存在的人来说,这是一个肮脏的黑客行为。

header("Content-Length: " . filesize($File));

如果要指定内容长度,则需要使用变量中的数据来执行此操作,而不是测量上述不存在文件的文件大小。

然后只是回应你的$content

于 2013-08-09T09:47:30.777 回答
-1

首先尝试确定您想要生成的文件是否要通过您的代码生成?

如果已生成,则转到步骤 2

Else Step 1 在第一个..中添加错误报告功能

          <?php
       error_reporting(E_ALL ^ E_NOTICE);
         $content = "<!DOCTYPE html><html lang="en"><head></head><body>";
         $content .= "<div>Hello World</div>";
         $content .= get_all_contents_from_db();
         $content .= "</body></html>";?>

因为在我的情况下(当我需要他们通过 php 生成新文件时)由于未生成文件而添加未定义的错误,这将在错误报告功能的帮助下解决。

第2步:

确保您的文件是原始文件后,然后下载文件

下载文件的 方法 简单的方法:尝试使用 href标记来简单地链接到您想要下载的文件

            <?php
           <a href="location of sample.html file">Sample File</a>
            ?>

通过编码方式:(假设你要下载changepwd文件那么它的语法是

       <?php
      //$file="chngpwd.php";
     if($_REQUEST['download'])
       {
 $file="chngpwd.php";
 $fs = filesize($file);
$ft = filetype($file);

header('Content-Type:application/'.$ft);
header('Content-Disposition:attachment;filename='.$file);
header('Content-length'.$fs);
echo file_get_contents($file);
      }?>

      <form method="post" action="" enctype="multipart/form-data">
 <input type="submit" name="download" value="DOWNLOAD">

     </form>
于 2013-08-09T09:50:54.207 回答