Суть вопроса, данные с сайта отправляются методом POST на сервер
На сервере с помощью библиотеки PhpOffice формируется файл docx
Если в файл docx не требуется загружать картинки, то с помощью функции readfile() все прекрасно работает, т.е. файл сразу скачивается, но, как только появилась необходимость добавлять картинки, скачивание файла docx не происходит (в консоле chrome в разделе Network - Response появляются куча символов, но скачивание не происходит), но файл прекрасно сохраняется на сервере с помощью функции saveAs.
Как я понимаю, файл docx не успевает сформироваться, код не асинхронный, не дожидается пока сформируется файл.
Вопрос, как правильно скачать файл после его готовности?
P.s. код файла php без особенностей:
<?php
require_once 'vendor/autoload.php';
$temp = new \PhpOffice\PhpWord\TemplateProcessor('./files/template_tp.docx');
use PhpOffice\PhpWord\Element\Table;
$data = $_POST['data'];
$d = json_decode($data, true);
/* .....код работы с $temp, имеются циклы for и foreach. Дабы не усложнять приведу фрагмент */
foreach ($_FILES["canvas_field"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["canvas_field"]["tmp_name"][$key];
$name = $path . $_FILES["canvas_field"]["name"][$key];
move_uploaded_file($tmp_name, "$name");
}
}
$uploadFile = $uploadDir . '\\' . basename($_FILES['file']['name']);
move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile);
//сохраняем файл и пробуем скачать
$outputFile = 'raschet.docx';
$temp->saveAs($outputFile);
// Имя скачиваемого файла
$downloadFile = $outputFile;
header("Content-Type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Content-Length: ".filesize($downloadFile));
header("Content-Disposition: attachment; filename=".$downloadFile);
readfile($downloadFile);
unlink($outputFile);
Заранее всем неравнодушным спасибо!