下载刚刚在PHP中创建的PowerPoint

时间:2014-09-02 14:05:06

标签: php codeigniter phppowerpoint

我正在尝试将PHPPowerPoint添加到我的一个工具中。我添加了PHPPowerPoint需要的所有文件并将下载链接写入正确的页面,但是当我尝试下载它时,它告诉我我没有访问该文件的许可。 我试图手动更改许可证,但没有任何改变,每次PHP创建一个具有默认许可证的新文件时也是如此。 我尝试使用chmod但没有任何改变。 我也试过chgrp和chown来改变所有者(即“守护进程”)。

这很奇怪,因为当我从工具中使用它时,只有用于创建PP文件的代码,所有内容都可以使用此许可证。

我想添加PP文件下载的工具是用codeigniter编码的。

3 个答案:

答案 0 :(得分: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');

答案 1 :(得分: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);

答案 2 :(得分: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扩展名的地方)。我希望这对你有所帮助。谢谢。