【问题标题】:Mysql Blob to xls using php without making a file on server?Mysql Blob 到 xls 使用 php 而不在服务器上创建文件?
【发布时间】:2015-07-26 16:18:55
【问题描述】:

我正在尝试从 mysql 中提取 BLOB 并将其发送给请求者,而不将其保存在服务器上。我已经让它处理 PDF 文件,但我们的一些客户想要 xls 文件。获取xls文件时,下载的文件是垃圾。在 HxD 中,它看起来像是在文件前面增加了 11 个字节。

这是我的代码,工作和不工作:

function blob_download_xls()  {

    $mysqli = openMySQLconnetion();

    $sql = "SELECT * FROM Uploads;";

    $results = $mysqli->query($sql);

    $row = $results->fetch_assoc();

    $bytes = $row['filedata'];

    header('Content-type: application/vnd.ms-excel');
    header('Content-Disposition: attachment; filename="report.xls"');

    print $bytes;
}

function blob_download_pdf()  {
    $mysqli = openMySQLconnetion();

    $sql = "SELECT * FROM Uploads;";

    $results = $mysqli->query($sql);

    $row = $results->fetch_assoc();

    $bytes = $row['filedata'];

    header("Content-type: application/pdf");
    header('Content-Disposition: inline; filename="report.pdf"');

    print $bytes;
}

知道我做错了什么吗?

【问题讨论】:

    标签: php mysql excel blob


    【解决方案1】:

    我用一个新帐户问了这个问题,却没有意识到我已经在这里有一个帐户。我已经解决了这个问题,这很愚蠢。

    在编写我的function.php 时,我在文件末尾放置了一个结束标记'?>'。在这个标签之后是一个 0d0a 用于换行返回,然后是 9 个 20 用于 9 个空格。我删除了结束标签,现在它可以正常工作了。

    【讨论】:

      【解决方案2】:

      处理此问题的正确方法是在打印字节后立即die(),在服务器有机会输出任何可能成功执行 PHP 代码的 HTML 之前。

      
      function blob_download_xls()  {
      
          $mysqli = openMySQLconnetion();
      
          $sql = "SELECT * FROM Uploads;";
      
          $results = $mysqli->query($sql);
      
          $row = $results->fetch_assoc();
      
          $bytes = $row['filedata'];
      
          header('Content-type: application/vnd.ms-excel');
          header('Content-Disposition: attachment; filename="report.xls"');
      
          print $bytes;
      
          die();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多