2012-10-02 45 views
-1

我目前正在使用cakephp,並且正在生成一個word文檔。我的問題是如何將生成的文檔放在我的web根目錄下,而不是下載。CakePHP生成一個文件到Webroot

+3

您的問題是過於空泛。您應該更多地解釋或複製一些代碼示例。 –

回答

0

我猜你正在使用一個動作來生成一個文檔,該文檔被輸出到瀏覽器。

您應該使用output buffering來「捕捉」輸出,然後將其寫入文件,或將文檔數據寫入字符串,然後將該字符串寫入服務器上的文件。編輯: PHPWord有一個SAVE方法。在您的操作中,您可以將文檔保存到某個位置,但輸出其他內容,即成功通知。這樣一來,你的行動只生成文件:

public function generateWordDocument(){ 
//... your word file creation... 
    $wordDocumentLocation = TMP . 'word_files/'; 
    $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); 
    $objWriter->save($wordDocumentLocation . 'helloWorld.docx'); 
    $this->Session->setFlash('Document generated!'); 
    $this->redirect(array('action'=>'index')); //or wherever you want 
} 

如果你要保護的文件,你可以將文件保存到一個「安全」的文件夾(這可以是「應用程序之外的文件夾/根目錄」文件夾,或拒絕所有指令),比使用其他動作,就像保護的.htaccess文件夾‘getWordDocument’:

function getWordDocument($documentName){ 
    $wordDocumentLocation = TMP . 'word_files/'; 
    if (file_exists($wordDocumentLocation . $documentName)) { //this is not really the safest way of doing it 
     $fp = fopen($wordDocumentLocation . $documentName, 'rb'); 
     header("Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document"); 
     header("Content-Length: " . filesize($wordDocumentLocation . $documentName)); 
     fpassthru($fp); 
     exit(); 
    } 
} 

請注意,這個代碼僅僅是‘抓’的概念,並在沒有辦法安全或最佳。

+0

是的,多數民衆贊成在右..我使用phpword生成的文件,它的工作正常,除了addimage功能 – OBM412

+0

再次,請嘗試添加更多的信息在下次你發佈任何地方的問題。它使回答更容易。 –

+0

它確實需要保存在TMP中? – OBM412

相關問題