2

我将 .docx 文件作为 largeblob 存储在 mysql 数据库中,存储在单独的块中(以免溢出每个 blob)。然后在 php 中,我在将数据库中的块“粘合”在一起后显示文档。一切看起来都很好,只是文档似乎没有分页符,这是尝试将其导出到其他程序时出现的问题。任何人都知道如何在那里获得分页符或我哪里出错了?

<?
$username=xxx;
$password=xxx;
$database=xxx;

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Unable to select database");

$doc=$_GET['doc'];
header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
$request = mysql_query("SELECT docData FROM tblDoc WHERE doc='$doc' ORDER BY pieceOrder ASC");
while($row=mysql_fetch_array($request)) {
    echo $row['docData'];
}
mysql_close();
?>
4

2 回答 2

1

DOCX 文件只是一个重命名的 ZIP 文件,其中包含许多 XML 文件和其他资产。如果您拆分文件进行上传,然后以正确的顺序重新组合以进行下载,则与最初上传的文件应该没有任何差异。但是,如果重新组装文件时出现错误,它很可能根本不会打开。真正删除分页符的唯一方法是从一些内部 XML 文件中删除那些特定的 XML 标记。

然而,这可能是一个长镜头,在 MS Word 窗口的右下角、缩放滑块的左侧有五个小图标,指示您用于查看文档的视图。(同样可以通过 Ribbon 中的 View -> Document Views 访问。)(具体细节可能会因 Word 版本而异。)现在,默认是第一个,打印布局,然后是全屏阅读Web 布局大纲草稿。对于来自 Web 的文档,您的 Word 副本是否有可能自动打开Web 布局?(Web 布局没有分页符。)

还有两件事:

  1. 您还应该添加一个Content-Disposition标头以指示应下载此文件(您还可以指定将在其中保存的文件名):

    $filename = 'example.docx';
    header('Content-Disposition: attachment; filename='.$filename);
    
  2. 你不应该使用mysql_功能,它们已被弃用,它们存在安全风险并导致无法维护的代码。最好使用mysqli_PDO进行数据库访问。更多在这里。

于 2013-04-25T23:00:03.030 回答
0

事实证明,一切都保存得很好。正如你所说,@pilsetnieks。就在那时,当我从我的应用程序导出时,我没有将它分配为正确的类型,所以它没有期待它得到的格式。感谢你的帮助!

于 2013-05-06T20:10:32.250 回答