Суть вопроса: Создаю сначала docx файл с данными, после чего пытаюсь вызвать окно сохранения, для скачивания данного файла пользователю на пк, но выдает ошибку, подскажите как это можно переделать? Может быть можно обойтись без сохранения файла на сервере а сразу на пк пользователя можно?
<?php
if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['someAction']))
{
printdoc();
}
function printdoc()
{
$mysql = new mysqli('localhost', 'root', '', 'kontakt');
$idproduct = $_POST['id_product'];
require_once 'vendor/autoload.php';
$phpWord = new \PhpOffice\PhpWord\PhpWord();
$_doc = new \PhpOffice\PhpWord\TemplateProcessor('./product.docx');
$uploadDir = __DIR__;
//$uploadfile = $uploadDir . "\assets\img\product\\" . basename($_FILES['fileimage']['name']);
// echo $uploadfile;
// move_uploaded_file($_FILES['fileimage']['tmp_name'], $uploadfile);
$outputFile = 'product_' . $idproduct . '.docx';
$result3 = $mysql->query("SELECT * from `catalog` where `id_product` = '$idproduct' ");
$contentonprint = $result3->fetch_assoc();
$id_product = $contentonprint['id_product'];
$id_post = $contentonprint['id_post'];
$Name_product = $contentonprint['Name_Product'];
$Operator = $contentonprint['Operator'];
$Internet = $contentonprint['Internet'];
$Minuts = $contentonprint['Minuts'];
$Sms = $contentonprint['Sms'];
$Price_tarif = $contentonprint['Price_tarif'];
$Price_sim = $contentonprint['Price_sim'];
$Image = $uploadDir . $contentonprint['image'];
$_doc->setvalue('id_product',$id_product);
$_doc->setvalue('id_post',$id_post);
$_doc->setvalue('Name_product',$Name_product);
$_doc->setvalue('Operator',$Operator);
$_doc->setvalue('Internet',$Internet);
$_doc->setvalue('Minuts',$Minuts);
$_doc->setvalue('Sms',$Sms);
$_doc->setvalue('Price_tarif',$Price_tarif);
$_doc->setvalue('Price_sim',$Price_sim);
//$_doc->setImageValue('img_product',array('path'=>$Image));
$_doc->setValue('img_product',$Image);
$_doc->saveAs($outputFile);
// имя файла, с которым он будет сохранен
$file_name = $outputFile;
// путь до файла
$file_path = $uploadDir;
// код 200, все хорошо
header("HTTP/1.1 200 OK");
header("Content-type: docx"); // тип файла
// дата по Гринвичу
header('Expires: ' . gmdate('D, d M Y H:i:s') .
' GMT');
// определяем браузер
$ua = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : '';
$isMSIE = preg_match('@MSIE ([0-9].[0-9]{1,2})@', $ua);
if ($isMSIE){
// если это Internet Explorer
// объясняем браузеру, что выводим файл
header('
Content-Disposition: attachment; filename="' . $file_name . '"'
);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
}else{
// если это НЕ Internet Explorer
// объясняем браузеру, что выводим файл
header('Content-Disposition: attachment;filename="' . $file_name . '"');
header('Pragma: no-cache');
}
}
?>