Auto download the file attachment using PHPWord

Viewed 38191

I'm trying to use PHPWord to generate word documents. And the document can be generated successfully. But there is a problem where my generated word document will be saved on the server. How can I make it available to download straight away?

Sample:

$PHPWord = new PHPWord();
//Searching for values to replace
$document = $PHPWord->loadTemplate('doc/Temp1.docx');
$document->setValue('Name', $Name);
$document->setValue('No', $No);
$document->save('php://output'); //it auto save into my 'doc' directory.

How can i link to the header to download it as follows:

header("Content-Disposition: attachment; filename='php://output'"); //not sure how to link this filename to the php://output..

Kindly advise.

7 Answers

This is work for me:

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007', $download = true);

header("Content-Disposition: attachment; filename='File.docx'");

$objWriter->save("php://output");

A simple solution for Laravel based on @user3214824 answer.

// ...    
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($PHPWord, 'Word2007');
$doc_name = 'fileName.docx';
$objWriter->save($doc_name); // saving in the public path just for testing

return response()->download(public_path($doc_name))->deleteFileAfterSend(true);
Related