2014-09-02 4 views
0

Я пытаюсь добавить PHPPowerPoint в один из моих инструментов. Я добавляю весь файл, который требуется PHPPowerPoint, и записываю ссылку для загрузки на нужную страницу, но когда я пытаюсь ее загрузить, он говорит мне, что у меня нет разрешения на доступ к файлу. Я попытался изменить разрешение вручную, но ничего не изменилось, также beacuse каждый раз, когда PHP создает новый файл с разрешением по умолчанию. Я попытался использовать chmod на нем, но ничего не изменилось. Я пробовал также chgrp и chown, чтобы изменить владельца (то есть «демон»).Загрузить PowerPoint, только что созданный в PHP

Странно, потому что, когда я использую его из инструмента, только с кодом для создания файла PP все работает также с этим разрешением.

Инструмент, в котором я хочу добавить загрузку файла PP, был закодирован с помощью codeigniter.

+0

Я думаю, что вы должны установить umask. Ваш ответ [здесь] (http://stackoverflow.com/questions/16672429/how-to-set-default-permissions-for-new-files-created-with-php) –

+0

Не знаете, зачем вам нужно писать на диск для вывода точки питания. – amphetamachine

ответ

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

+0

это помощник codeigniter – Otto

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

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

Я пытаюсь построить PPT Используя PHPPowerpoint, именно эти шаги выполняются, он загружает файл в мою систему, но говорит, что 'File не может быть открыт'. Файл работал, когда код записывал его на сервер. – void

+0

@void Я бы хотел поставить на то, что ваш вывод powerpoint содержит сообщения об ошибках/ошибках PHP, что приведет к тому, что файл не будет действительным zip-файлом. Попробуйте открыть файл, загруженный в текстовый редактор, и посмотрите на первые несколько строк. – amphetamachine

+0

Да, у него было эхо, которое создавало проблему, я исправил ее сейчас. :) Благодаря – void

Смежные вопросы