我将.docx文件作为largeblobs存储在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();
?>
答案 0 :(得分:1)
DOCX文件只是一个重命名的ZIP文件,里面有许多XML文件和其他资源。如果您拆分文件以进行上传,然后按照正确的下载顺序重新组装,则原始上传的文件应该没有任何差异。但是,如果重新组合文件时出错,则很可能根本无法打开。实际删除分页符的唯一方法是从某些内部XML文件中删除这些特定的XML标记。
然而,这可能是一个很长的镜头,在MS Word窗口的右下角有五个小图标,位于缩放滑块的左侧,表示您用于查看文档的视图。 (同样可以通过视图 - &gt;功能区中的文档视图访问。)(具体细节可能因Word版本而异。)现在,默认是第一个,打印布局,然后有全屏阅读,网页布局,大纲和草稿。是否有可能对于来自网络的文档,您的Word副本会自动打开 Web布局? ( Web布局没有分页符。)
还有两件事:
您还应添加Content-Disposition
标头以指示应下载此文件(您还可以指定将在其下保存的文件名):
$filename = 'example.docx';
header('Content-Disposition: attachment; filename='.$filename);
您不应该使用mysql_ 函数,它们已被弃用,它们存在安全风险,并且会导致无法维护的代码。使用mysqli_ 或PDO进行数据库访问最好。 More here.
答案 1 :(得分:0)
事实证明一切都存放得很好。正如你所说,@ pilsetnieks。就在那时我从我的应用程序导出时,我没有将它指定为正确的类型,所以它不期望它得到的格式。谢谢你的帮助!