2011-08-28 2 views
2

에 FOPEN 및 Fwirte으로 Word 문서를 생성 한 후 다른 이름으로 저장 대화 상자를 확인으로 어떻게 다음 스크립트를 썼다 기본적으로 생성되는 파일은 "yourDoc.doc"이며 파일에 작성된 텍스트는 $ wordDoc 변수에 있습니다.는 PHP

현재이 스크립트는 문서를 만들고 내 서버 페이지가있는 경로와 동일한 경로에 자동으로 저장합니다. 내가하고 싶은 일은 위의 스크립트를 사용하는 것이지만 "다른 이름으로 저장"대화 상자를 통해 최종 사용자가 자신의 컴퓨터에 문서를 로컬로 저장할 수 있도록합니다.

연구를 몇 시간 수행 한 후에 헤더를 사용할 수 있음을 알았지 만 작동시키지 못했습니다. 헤더, fopen 및 fwrite를 모두 포함하는 예제를 찾을 수 없습니다. 예를 들어, 나는 행운과 함께 다음 스크립트의 많은 변화를 시도 :

$fp = fopen("yourDoc.doc", 'w+'); 
fwrite($fp, $wordDoc); 
fclose($fp); 
header('Content-type: application/ms-word'); 
header('Content-disposition: attachment; filename="yourDoc.doc"'); 
readfile("yourDoc.doc"); 

가 나는 또한 시도 다음 (이것은 내 전체 PHP 페이지입니다) :

<?php 
//Connect to Db// 
$con = mysql_connect("localhost", "root", "admin"); 
//Verify connection// 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
//Select Db// 
mysql_select_db("schooldb", $con); 
$wordDoc = $_GET['word'];//text for word doc// 
header('Content-type: application/ms-word'); 
header('Content-disposition: attachement; filename="yourDoc.doc"'); 
$fp = fopen("yourDocument.doc", 'w+');//word doc created// 
fwrite($fp, $wordDoc);//text written to word doc// 
fpassthru($fp); 
fclose($fp); 
mysql_close($con); 
?> 

이 사람이 뭔가 잘못을 볼 수 있습니까 ? 파일이 내 서버에서 끝나고 다른 이름으로 저장 대화 상자가 표시되지 않습니다.

정말 도움이 필요합니다.

감사합니다,

답변

4

먼저 파일에서 단어의 데이터를 기록 할 필요가 없습니다 : 그러나

header('Content-type: application/ms-word'); 
header('Content-disposition: attachment; filename="yourDoc.doc"'); 
echo $wordDoc; 

, 당신은) (머리글을하기 전에 어떠한 출력이 전혀 발생하지 않았는지 확인해야 전화. "output"의 단일 문자조차도 발생하면 PHP는 헤더를 보내지 않으며 실패합니다.

+0

Thnx Marc B - 파일 출력 이벤트를 별도의 PHP 페이지로 실행하여 이전 출력이 없음을 확인했습니다. 나는 yourDoc.doc가 이미 폴더에있는 헤더를 사용하여 시도했지만 Save As 프롬프트를 얻을 수 없습니다. $ wordDoc은 이에 따라 반향을 수행합니다. 전체 스크립트 (예 : fopen, fwrite 및 헤더)를 시도했지만 파일이 서버에 저장되어 다른 이름으로 저장 대화 상자로 나에게 메시지를 표시하지 않았습니다. 다른 제안이 있으십니까? 테스트 서버 (LAMP)의 설정을 변경해야합니까? – user175328

+0

FF의 Firebug/HTTPFox와 같은 것을 사용하여 브라우저가 수신하는 헤더를 봅니다. 실제로 처리 헤더가 통과하는지 확인하십시오. 다운로드를 시도하려면 다른 브라우저를 사용해보십시오. 저쪽에, 아무 생각도. –

+0

Thnx 다시, 나는 마침내 FF로 작업하게되었습니다. href와 함께 파일 다운로드 만 실행할 수 있으며 onclick JS 함수가 아닌 것 같습니다. 이제 unlink()를 실행하여 자동으로 서버에 저장되는 잘못된 파일을 지워야합니다. 불행히도 Safari는 FF에서 다르게 스크립트를 읽습니다. 그래서 Safari는 unlink() 때문에 doc이 존재하지 않는다고 생각하고 FF는 unlink()가 실행되기 전에 doc을 얻습니다. IE에 대해 궁금합니다 ... – user175328