php - How to unlink the excel file after download in cakephp 3.2

267

I am doing an excel plugin for my project ,i want to unlink that excel file after the completion of download by the user or cancel by the user in the popup showing for the download.

I have tried the unlink code to getting things done ,but as there is the response ,i am slightly confuse how to make it. Below i have attached some part of code . Any suggestion will highly appreciated.

 $filename = time() . "-ocma-sales-report-" . date("Y-m-d") . ".xlsx"; //'.time() . '-ocma-sales-report-' . date("Y-m-d").'.xls'
                        $objWriter->save("temp_excel/$filename");

                        $filePath = 'temp_excel/' . $filename;
                        $this->response->file($filePath, ['download' => TRUE, 'name' => $filename]);

                        return $this->response;
                        //unlink($filename);

                        exit;
80

Answer

Solution:

You can use FileSystem/File class for create, modify and delete file. Also for download file you have to use simple php code because$this->response->file($filePath, ['download' => TRUE, 'name' => $filename]); is not allowing to so any operation after executing function.

ob_clean();

$filePath = 'temp_excel/' . $filename;
$size   = filesize($filePath);

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $filename); 
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);
readfile($filePath);

$file = new \Cake\Filesystem\File($filePath);
$file->delete();
exit();

People are also looking for solutions to the problem: ejabberd - Create user in ejabbred using PHP

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.