2013-08-28 42 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');,並呈現出一個空白頁面,但沒有錯誤,也沒有下載。

請指導我以正確的方式下載我的壓縮文件在蛋糕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