Я использую PHPWord для создания документов Word, и я надеюсь, что кто-то может помочь в этом.Теперь, когда он настроен, ajax-запрос отправляется на мой сервер из браузера, запрашивающего сборку документа PHPWord.Документ создается и хранится в файле на сервере с таким кодом:
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$fileName = $picklistDetails['file_name'] . ".docx";
$filePath = '../users/' . $userId . "_word_" . $fileName;
$objWriter->save($filePath);
Чтобы позволить пользователю загрузить файл, после успешного выполнения запроса ajax я использую window.location для отправки пользователюстраница, которая помещает текстовый документ вместе с этим (позволяя начать загрузку):
$fileName = $this->session->word_file_name;
$filePath = $this->session->word_file_path;
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=" . $fileName);
header("Content-Transfer-Encoding: binary");
readfile($filePath);
Все это прекрасно работает, единственная проблема в том, что я действительно предпочел бы, чтобы файл не был сохранен на сервереперед загрузкой.Я исследовал PHPWord, и согласно этому сообщению ( Автоматическая загрузка файлового вложения с использованием PHPWord ) есть некоторые обсуждения того, как вы можете отправить файл в выходной поток php вместо записи его на диск, а потому что сборкадокумент word делается в ajax, а затем для загрузки используется отдельная страница, я не думаю, что это сработает.Я не прав?
Также в этом посте ( Сохранить сгенерированный файл в базе данных PHPWORD ) есть описание того, как сохранить его в БД, но все еще есть промежуточный этап файлана сервере, которого мне нужно избегать.
Есть ли способ изменить
$objWriter->save($filePath);
, чтобы он не записывался на диск, а вместо этого сохранялся в переменную или что-то еще?Тогда я мог бы хранить в базе данных, где я мог бы зашифровать ее.
Любая помощь будет оценена.Я вроде начинающего программиста php, поэтому подробная помощь будет высоко ценится.хорошего дня.