2016-09-16 12 views
0

私は自分のプロジェクトにExcelプラグインを使用しています。ユーザーがダウンロードを完了した後にそのExcelファイルをリンク解除したいのですか、ダウンロード。cakephpでダウンロードした後にExcelファイルのリンクを解除する方法3.2

私は物事を終わらせるためにリンク解除コードを試しましたが、応答があるので、私はそれを作る方法を少し混乱させています。 以下、コードの一部を添付しました。 どのような提案も高く評価されます。

$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; 
+1

CakePHPで行う方法はわかりませんが、PHPは一時ファイルを生成し、 'tmpfile()'関数から 'php:// temp'に自動的に削除するいくつかのツールを提供しています。ストリームラッパー。一時ファイルを自分で処理する場合は、削除が遅かれ早かれ失敗するため、クリーンアッププロセスをスケジュールする必要があります。 –

+0

Ok @ÁlvaroGonzález私はそれを持っています。ありがとうございます – sradha

答えて

0

ファイルの作成、変更、削除にFileSystem/Fileクラスを使用できます。また、ダウンロードファイルの場合は、関数を実行した後に$this->response->file($filePath, ['download' => TRUE, 'name' => $filename]); がそのような操作を許可していないため、単純なPHPコードを使用する必要があります。

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(); 
+0

私はコードを変更しました –

+0

私はchekingです。 – sradha

+0

あなたはどこから来たのですか? –

関連する問題