Could not create a temporary file with unique name in the specified directory.
在开发过程中遇到特别头疼的地方,无论我怎么测试都报这个错误。
后来一顿百度,这基本就是没有生成临时文件的权限问题,需要在你生成文件的这个接口中加上
//文件引入
require '../../Classes/vendor/autoload.php';
use PhpOffice\PhpWord\Settings;
引入文件并使用 PhpOffice\PhpWord\Settings,下面这一步是至关重要的。
// 设置临时文件夹
Settings::setTempDir('../../../FileStorage/exportWord/');
设置完成之后,就可以生成临时文件并创建word文档啦。
以下是所有代码
<?php
include "../header.php";
//文件引入
require '../../Classes/vendor/autoload.php';
use PhpOffice\PhpWord\Settings;
// 模板的路径
$mobel_path = '../../../FileStorage/importTemplate/template.docx';
// 设置临时文件夹
Settings::setTempDir('../../../FileStorage/exportWord/');
// 声明一个模板对象、读取模板
$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($mobel_path);
// 替换模板中的变量,对应word里的 ${title}
// $templateProcessor->setValue('name','小明');
// $templateProcessor->setValue('age','18');
$savepath="../../../FileStorage/exportWord/";
$name="小明.docx";
if(empty($filename)) $filename = date('Y-m-d-h-i-s-').$name;
$full_path = $savepath . $filename;
// 生成新的word
$templateProcessor->saveAs($full_path);
if (file_exists($full_path)){
$tableArray=array(
"code"=> 200,
'success'=>true,
"msg"=> "导出成功",
'url' =>substr($full_path,8)
);
}else{
$tableArray=array(
"code"=> 603,
'success'=> false,
"msg"=> "导出失败,请稍后再试",
'url' =>''
);
}
echo json_encode($tableArray,JSON_UNESCAPED_UNICODE);