PHP下载docx文档打开时显示 word2007无法打开Office OpenXML 文件 (二)

缘由

今天又进行了一次php下载docx文件,由于其中更改了一个函数,居然又出现了如题的现象,由于之前遇到过这个问题,并且还搜索过许多相关的解决办法,我自己之前还写了一个自己解决的总结,于是今天就到处查找echo,print,var_dump之类能输出信息的地方,全部屏蔽了仍然无用。

过程

又到处搜索学习一番,学习了很多种下载文件的办法。记录如下:

  1. 强制下载核心代码如下:
header ("Content-Type: application/force-download");
header ('Content-Disposition: attachment;filename="'.$filename.'"');
 readfile ($filename);

无用,打开仍然是如题现象。

  1. 用二进制工具比较服务器与下载下来的文件,发现服务器的能正常打开,下载下来的不能打开,二者二进制有好几处不同。用winhex对开头及结尾二进制进行了部分恢复式修改(对照服务器中的源文件docx),现象如故。
  2. 反复检查网页是否存在html残留的信息,没有。
  3. 将那个函数换回原来的,就正常。
  4. 单独调试这个新函数(分词与余弦匹配),运行速度还可以。
  5. 将函数融入php主文件时再调试,发现运行速度有所下降。看来这个函数对于大数据的处理还是有所延迟的。

解决

  1. 突然灵光一现,是不是原来的函数运行快,下载时秒下,因而无问题。也就是现在的函数运行大数据时慢,结果网页输出的内容部分未清空,也跟着下载下来了?这个感觉有点类似echo之类的效果。
  2. 发现这个问题后,那首要做的事就是清空缓存,下载之前加上这个代码试试:
ob_end_clean();

完美!直接解决了这个问题。

结论

对于运行速度慢的自定义函数,要将运行结果下载的话,最好是先清空缓存,否则容易出现如题现象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值