2011-11-24 3 views
0

서버에 빈 temp .htm 파일을 만들고 다운로드하여 사용자에게 보내는 간단한 방법이 있습니까? fopen()을 사용하여 파일을 실제로 생성 할 필요는 없습니다. 일시적으로 생성하여 사용자에게 보내면됩니다.PHP에서 임시 .htm 파일을 만들고이를 사용자에게 보냅니 까?

웹 사이트 인증에 필요합니다. PHP 내에 tmpfile() 함수가 있다는 것을 알았지 만, 아직 나를 위해 잘 작동하지 않습니다. Symfony 프로젝트에서 작업 중입니다. 아마도 모르는 헤더 함수가있을 수 있습니다.

내가 필요로하는 모든

은 다음과 같습니다

$token = '12345'; 
$filename = $token . '.htm'; 
createatmpfile($filename); 
header(send .htm file as download to the user); 

확실하지 위의 어쩌면 내 의사는 내가 ..

무엇을 찾고 편집을 할 방법에 대해 설명 작동,하지만 :

그 방법을의 Symfony2에서 작동합니다 (Grad에게 감사드립니다) :

use Symfony\Component\HttpFoundation\Response; 

컨트롤러 방법 :

당신이

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

심포니에서 사용할 수있는 응답을 다운로드하는 사용자를 강제로 줄을 다음에 사용할 수있는 일반 PHP에서

public function generateAction() { 
    $response = new Response(); 
    $response->headers->set('Content-Disposition', 'attachment; filename="'.$token.'.htm"'); 
    return $response; 
} 

답변

2

:이

$this->getResponse()->setHttpHeader('Content-Disposition', 'attachment; filename="filename.htm"'); 

헤더 세트를 사용하면 컨트롤러를 실행할 수 있으며 응답을보기에 채우거나 과 함께 을 사용할 수 있습니다.

그러나 달성하려는 목표에 따라 다운로드를 강제 실행하기 위해 임시 파일을 만들 필요가 없습니다.

+0

굉장, 고마워! – Mike

+0

그래, 나 좀 도와 줄 수있어? Symfony2, $ this-> getResponse()에서 치명적인 오류 (정의되지 않은 메서드 호출)를 실제로 사용하고 있습니다. 나는 새로운 Response()를 사용할 수 있다고 읽었다; Symfony \ Component \ HttpFoundation \ Response와 결합하여; 네임 스페이스. – Mike

+0

$ response = new Response(); $ response-> headers-> set ('Content-Disposition', '첨부 파일, filename = "'. $ 토큰 .htm" '); return $ response; 공장!! 고마워. – Mike

관련 문제