2009-10-03 174 views
1

我正在一家商店的系統上,我有以下鏈接http://cmstutorials.org/shop/downloads/2793156879(原鏈接cmstutorials。組織/店/ downloads.php?下載= 2793156879)下載鏈接隱藏

我想要做的讓用戶下載與ID爲2793156879相匹配的項目,而不顯示該文件的實際鏈接。就像他們在themeforest.net上一樣

我該怎麼做?

+0

這個ID是一個常量? – 2009-10-03 16:20:07

回答

0

wooohoooo

感謝很多人,這個網站的規則,我總是得到正確的答案:d

我貼這個的header.php上述包括ob_start();

和之前的標題功能ob_ get_clean();

可能是有用的人(注:第二個功能我添加了一個空間之前得到這樣它會顯示正確,不要忘了當u用它來刪除它)

+0

現在你應該標記最有用的答案......除非你不再需要幫助...... – IProblemFactory 2009-10-03 17:05:29

2

這個例子應該可以幫助您:

$len = filesize($filename); 
header("Content-type: image/jpeg"); 
header("Content-Length: $len"); 
header("Content-Disposition: inline; filename=\"$new_filename\""); 
readfile($filename); 

或另外一個,對我來說看起來簡單:

當然
<?php 
header('Content-type: image/jpeg'); 
$f = file_get_contents('path/to/image.jpg'); 
print $f; 
?> 

PS,你必須content-type適合您的文件。在發送任何實際輸出(回聲)之前

+0

第一個示例應該可以工作,並且是必要的,以便瀏覽器知道該調用該文件的內容。 – 2009-10-03 20:10:06

0

如果您我會嘗試擴展這項服務,我建議你看看perlbal。它所做的一個巧妙的技巧是,你的應用程序可以發送一個特殊的頭文件,告訴perlbal爲另一臺服務器提供靜態文件。這樣您就不需要綁定一個PHP線程並將位向下推送到客戶端。

0

內容處理是好的,但另一種解決辦法是使用PATH_INFO和獲取文件是這樣的:

http://example.com/download.php/2793156879.zip 

您的download.php會像

// handle path_info 
$filename=$_SERVER['PATH_INFO']; // gets "/2793156879.zip" as $filename 

// do smtg w/ $filename... 
// ... 

// download 
$len = filesize($filename); 
header("Content-type: application/force-download"); 
header("Content-Length: $len"); 
readfile($filename); 

注:應用程序/力 - 下載不存在,它只是在那裏強制每個瀏覽器的下載。 (一些MSIE似乎遇到了應用程序/八位字節流的問題)

這種方法的優點是可以與所有瀏覽器一起工作:即使是非常古老的瀏覽器,也不支持「Content-Disposition:」標題。

它有一個小缺點,你必須從PATH_INFO字符串substr()你自己的產品代碼