先说下需求:正常点击免责声明是下载的文件,根据用户需求是点击预览,所以这里利用phpword生成一个静态页面并进行预览。不多说,直接上代码附带类文件。
类文件:https://pan.baidu.com/s/1yhZu5JyrtIfKnGllRblPtg 提取码:fbu3 把类文件放在vendor目录下。
html代码:
//触发ajax把id传到控制器
$('.click').click(function(){
id = $(this).prev().val();
$.ajax({
type: "POST",
url: "{:url('home/Single/ajax')}",
data: {id:id},
dataType: "json",
success: function (msg) {
window.open(msg.html)//新页面打开预览
}
});
return false;
})
后台代码:
//首先头部引用类
use PhpOfficePhpWordIOFactory;
use PhpOfficePhpWordPhpWord;
public function ajax(){
//根据id查询数据库存的文档路径
$file_id = $_POST['id'];
$info = M('download_file')->where(['file_id'=>$file_id])->find();
$IOFactory = new PhpWord();
$phpWord = PhpOfficePhpWordIOFactory::load('./'.$info['file_url']);
$xmlWriter = PhpOfficePhpWordIOFactory::createWriter($phpWord, "HTML");
//生成hello.html文件路径
$xmlWriter->save('./Public/doc/hello.html');
//判断文件是否存在,额庵后传到前台
if(file_exists('./Public/doc/hello.html')){
$html='/Public/doc/hello.html';
$dataa = array('html'=>$html,'url'=>$url);
echo json_encode($dataa);
}else{
$dataa = array('html'=>'0');
echo json_encode($dataa);
}
}