2013-08-28 1 views
0

Я только что обновил от cakephp 1.1 до 1.3. У меня все на сайте обновлено и отлично работает, за исключением создания и загрузки zip-файлов.Правильный способ в CakePHP 1.3 создать zip-файл и загрузить без оставления вида

Вот код в моем accounts_controller.php:

function zip() { 
     $this->checkSession(); 
     $this->checkUpgradedAccount(); 
     $files = array(); 
     $this->layout="zip"; 

    /* 
    code where I locate the files to zip, combine them, etc 
    */ 

      $tmp_file = "/home/[userdirectory]/tmp/".md5(mktime()).".zip"; //directory name edited 
      $command = "/usr/bin/zip -j $tmp_file ".implode(" ",$zip_files); 
      exec($command); 
      foreach($zip_files as $zf) { 
       unlink($zf); 
      } 
      $file_path = $tmp_file; 
      $this->set("path",$file_path); 
      $this->render(); 
} 

Когда я называю это действие, однако, я получаю сообщение об ошибке:

Error: The requested address '/accounts/zip' was not found on this server.

Он работал так же, как это в версии 1.1. Я предполагаю, что что-то изменилось, но я не уверен, что и не смог найти что-либо, что уместно в документации.

zip.ctp вид файла делает существует, но она не имеет ничего в ней кроме: <?php ?>

Я подозреваю, что что-то изменилось с раскладками. В каталоге/layouts отсутствует «zip.ctp». Однако я изменил эту строку на $this->layout('default');, и она отображает пустую страницу с NO ERROR, но также без загрузки.

Пожалуйста, направляйте меня надлежащим образом, чтобы загрузить мой zip-файл в торте 1.3. Заранее спасибо.

ответ

1

У вас есть две разные проблемы. Эта ошибка вы получаете потому, что у вас нет файла макета zip. Что касается вашей проблемы с получением zip-файла, вы должны использовать класс просмотра мультимедиа - http://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Views.html#media-views

+0

Спасибо, я подумал, может ли быть несколько. Спасибо за ссылку. Я пропустил это - это выглядит очень полезно. Если я использую свой макет по умолчанию, будет ли этот класс заставлять мою страницу пытаться перейти на/zip? Я хочу, чтобы он остался на той же странице и просто загрузил файл. – dwlorimer

+0

Какой макет, который вы используете, не должен влиять на то, что происходит с логикой контроллера или модели, если вы не вставляете какой-либо необычный код в один из ваших макетов. Поэтому я бы подумал, что вы можете использовать либо отлично. – Kai

+0

Благодарим вас - просмотр мультимедиа кажется отличным. Я могу скачать PDF-документы в порядке. Однако, когда я пытаюсь загрузить .zip-файл, размер файла правилен, но когда я пытаюсь разархивировать его, Windows говорит, что он пуст. Если я загружаю тот же самый файл с помощью ftp (вместо браузера), все в порядке. Есть идеи? Я могу задать новый вопрос, если понадобится. – dwlorimer