编写并创建.html文件下载

时间:2013-08-09 09:28:54

标签: php download

我需要直接在页面上编写和创建.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>

2 个答案:

答案 0 :(得分:3)

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

修复此问题,以便从某个合理的位置指定文件名(而不是尝试从未定义的变量中计算硬盘上不存在的文件的名称)。

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

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

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

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

然后回复你的$content

答案 1 :(得分:-1)

首先尝试确定您希望生成的文件是否通过代码生成或不生成?

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

其他步骤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步:

确保您的文件已发起,然后下载文件

下载文件的方式 简单方法:        尝试 a 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>