2014-09-02 73 views
0

我正在嘗試將PHPPowerPoint添加到我的其中一個工具中。我添加了PHPPowerPoint需要的所有文件,並將下載鏈接寫入正確的頁面,但是當我嘗試下載它時,它告訴我我沒有訪問該文件的許可證。 我試圖手動更改許可證,但沒有任何更改,每次使用默認許可證PHP創建一個新文件時也是如此。 我試圖使用chmod,但沒有任何變化。 我也嘗試chgrp和chown來更改所有者(即「守護進程」)。下載剛剛在PHP中創建的PowerPoint

這很奇怪,因爲當我從工具中使用它時,只用創建PP文件的代碼,一切都可以使用此許可證。

我想添加PP文件下載的工具是用codeigniter編碼的。

+0

我認爲你必須設置umask。你的答案是[這裏](http://stackoverflow.com/questions/16672429/how-to-set-default-permissions-for-new-files-created-with-php) – 2014-09-02 14:12:08

+0

不知道你爲什麼需要寫到磁盤輸出一個簡報。 – amphetamachine 2014-09-02 14:27:04

回答

0

您可以使用下載幫手

Download Helper允許您將數據下載到桌面。

加載此助手

該輔助用下面的代碼加載:

$this->load->helper('download'); 

下列功能是可用的:

force_download('filename', 'data') 

生成服務器頭迫使數據被下載到你的桌面。有用的文件下載。第一個參數是要下載文件的名稱,第二個參數是文件數據。例如:

$data = 'Here is some text!'; 
$name = 'mytext.txt'; 

force_download($ name,$ data); 如果你想下載從服務器現有的文件,你需要將文件讀入一個字符串:

$data = file_get_contents("/path/to/photo.jpg"); // Read the file's contents 
$name = 'myphoto.jpg'; 

force_download($name, $data); 
+0

什麼是下載幫手?它是PHPPowerPoint的一部分嗎? – amphetamachine 2014-09-02 14:37:39

+0

這是一個codeigniter助手 – Otto 2014-09-02 15:51:01

0

我做了下載.pdf文件的功能,因爲它是在PHP核心, 這裏它的示例代碼

$path = "path of your file"; 
$fullPath = $path.$_GET['fnm']; 

if ($fd = fopen ($fullPath, "r")) { 
    $fsize = filesize($fullPath); 
    $path_parts = pathinfo($fullPath); 
    $ext = strtolower($path_parts["extension"]); 
    switch ($ext) { 
     case "pdf": 
     header("Content-type: application/pdf"); // add here more headers for diff. extensions 
     header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download 
     break; 
    default; 
     header("Content-type: application/octet-stream"); 
     header("Content-Disposition: filename=\"".$path_parts["basename"]."\""); 
    } 
    header("Content-length: $fsize"); 
    header("Cache-control: private"); //use this to open files directly 
    while(!feof($fd)) { 
     $buffer = fread($fd, 2048); 
     echo $buffer; 
    } 
} 
fclose ($fd); 
exit; 

只需將文件擴展名pdf更改爲ppt(無論PDF擴展發生在何處)。我希望這對你有幫助。謝謝。

+0

'Content-Disposition:filename = ...'[不是Content-Disposition頭部的有效值](https://en.wikipedia.org/wiki/MIME#Content-Disposition) – amphetamachine 2014-09-02 15:56:36

3

下面介紹瞭如何將PHPPowerPoint對象寫入瀏覽器並讓用戶下載它。它不會寫入文件系統,因此不需要寫入權限。

$ppp = new PHPPowerPoint; 
// create the powerpoint, adding slides, content, etc. 
// ... 
// done 

// set up the writer 
$pppwriter = PHPPowerPoint_IOFactory::createWriter($ppp, 'PowerPoint2007'); 
// tell the browser a powerpoint is coming 
header('Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation; charset=binary'); 

// make sure it downloads as $filename 
header("Content-Disposition: attachment; filename={$filename}"); 

// output the powerpoint file data 
$pppwriter->save('php://output'); 
+0

我正在嘗試使用PHPPowerpoint構建一個PPT,完全按照上面提到的步驟操作,它正在我的系統上下載文件,但卻說'文件無法打開'。當代碼寫入服務器時,文件正在工作。 – void 2016-01-16 08:22:31

+0

@void我願意打賭你的Powerpoint輸出中有PHP警告/錯誤消息,這將導致該文件不是一個有效的zip文件。嘗試在文本編輯器中打開您下載的文件,並查看前幾行。 – amphetamachine 2016-01-19 16:22:28

+0

是的,它正在產生一個迴應,造成了這個問題,我現在修復了它。 :) 謝謝 – void 2016-01-19 18:26:55