我正在尝试将PHPPowerPoint添加到我的一个工具中。我添加了PHPPowerPoint需要的所有文件并将下载链接写入正确的页面,但是当我尝试下载它时,它告诉我我没有访问该文件的许可。 我试图手动更改许可证,但没有任何改变,每次PHP创建一个具有默认许可证的新文件时也是如此。 我尝试使用chmod但没有任何改变。 我也试过chgrp和chown来改变所有者(即“守护进程”)。
这很奇怪,因为当我从工具中使用它时,只有用于创建PP文件的代码,所有内容都可以使用此许可证。
我想添加PP文件下载的工具是用codeigniter编码的。
答案 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扩展名的地方)。我希望这对你有所帮助。谢谢。