2013-08-27 2 views
0

개발중인 웹 서비스에서 사용자는 자신의 데이터를 HTML 파일로 다운로드 할 수 있어야합니다. 이 파일에는 모든 것을 포함합니다 (이미지를 base64로 포함).웹 사이트에서 임시 파일 다운로드 가능

이제 사용자가이 파일을 다운로드하게하려면 파일을 만들어 내 웹 서버에 저장해야합니다. 이후 다운로드가 완료되면 알아낼 수 없기 때문에 cronjob을 사용하여 삭제해야합니다.

다른 방법이 있습니까? 내 웹 서버에 실제로 존재하지 않지만 어떻게 든 임시로 생성되는 파일을 사용자에게 다운로드 할 수 있습니까?

도움 주셔서 감사합니다.

+1

:에서

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

+0

@AlmaDoMundo 그것이 내가 찾고있는 것과 정확히 일치하지만, 어떻게하는지 깨닫지는 못했지만 대답은 나에게 보여 줬습니다. :) –

답변

3

WWW에 관한 한, 파일과 같은 것이 없습니다. HTTP 자원 만 있습니다.

서버가 파일에서 데이터를 가져올 수도 있지만 그렇지 않을 수도 있습니다.

PHP 프로그램에서 파일의 데이터를 출력하기 만하면됩니다. (즉, <?php?> 외부에 넣거나 echo 또는 PHP가 어떤 것을 출력하게하는 다른 기술을 사용하여).

Content-Type 헤더를 올바르게 사용해야하지만 HTML을 사용하고 있으므로 text/html이 기본값입니다.

브라우저 창에서 다운로드 한 HTML을 렌더링하는 대신 사용자에게 다운로드를 저장하라는 메시지가 표시되도록하려면 Content-Disposition 헤더를 추가 할 수 있습니다. 내가 점을 가지고 확실하지 http://php.net/manual/en/function.header.php

+0

완벽, 고맙습니다. –

1
<?php 
// We'll be outputting a PDF 
header('Content-type: application/pdf'); 

// It will be called downloaded.pdf 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 

// The PDF source is in original.pdf 
readfile('original.pdf'); 
?> 

. 그렇다면 단순히 일정한 PHP 스크립트 (모든 내부 스크립트를 수집)를 통해 원하는 데이터를 처리 한 다음 사용자에게 컨텐츠를 보내지 않는 이유는 무엇입니까? 이것은 정확히 하나의 다운로드 시간 개념과 일치합니다 (무언가를 만들거나 삭제할 필요가 없음).
+0

글쎄, 마지막 줄'readfile (...)'은 내가하고 싶지 않은 것을합니다 (나는 실제 파일을 원하지 않습니다). 대신에이 줄 대신에 내용을 출력한다면 이것도 가능합니까? 그게 내가 원하는거야! –

+1

네, 단지 readfile 대신 문자열을 echo합니다. –

관련 문제