2016-09-16 10 views
0

내 프로젝트의 엑셀 플러그인을 만들고 있는데, 사용자가 다운로드를 완료 한 후 엑셀 파일의 링크를 해제하거나 다운로드.cakephp에서 다운로드 한 후 엑셀 파일의 링크를 해제하는 방법 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 클래스를 사용할 수 있습니다. 또한 파일을 다운로드하는 경우 간단한 PHP 코드를 사용해야합니다. $this->response->file($filePath, ['download' => TRUE, 'name' => $filename]); 은 함수 실행 후 모든 작업을 허용하지 않기 때문입니다.

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

출신 국가를 알 수 있습니까? –