2011-08-16 113 views
0

我已經編碼了一個組件(庫)。我想整理強制下載所有項目。 但不會工作:(,剛開始損壞的文件。我曾嘗試使用完全相同的代碼並運行它的Joomla之外,它的作品很好,我已經創建了一個模板,這就是完全以空只是 有,但它不是幫助。Joomla組件+強制下載

我(com_component /視圖/ forcedownload/TMPL /如default.php)

<?php 
if(!isset($_GET["id"]) || empty($this->item)) { 
    echo "Invalid request"; 
    die(); 
} 

$path  = "images/randomtest/catid".$this->item->cat_id."/"; 
$filename = $path.$this->item->filename; 
$file = $this->item->filename; 

if(!file_exists($filename)) { 
    echo "Error: File not found"; 
    die(); 
} 

header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=$file"); 
header("Content-Type: Content-type: application/octet-stream"); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: ".filesize($filename)); 
readfile($filename); 
?> 

回答

0

的第一件事情是:你正在使用$_GET['format'] = raw如果不是在你的控制器做

if(!isset($_GET["format"]) || $_GET["format"]!='raw') { 
    $this->setRedirect(JURI::current(). '?format=raw'); 
    return false; 
} 

也是你的頭你是decl ared內容類型爲:application/octet-stream,你確定要這樣嗎?

也在這裏:

$path  = "images/randomtest/catid".$this->item->cat_id."/"; 

需要,全系統路徑不僅是一個地方,可以嘗試使用:

$path  = JPATH_SITE."/images/randomtest/catid".$this->item->cat_id."/"; 
+0

沒有什麼區別。 – Rond

+1

您確定您的請求中包含「&format = raw」 – WooDzu

+0

是的。 = / – Rond