我正在一家商店的系统上,我有以下链接http://cmstutorials.org/shop/downloads/2793156879(原链接cmstutorials。组织/店/ downloads.php?下载= 2793156879)下载链接隐藏
我想要做的让用户下载与ID为2793156879相匹配的项目,而不显示该文件的实际链接。就像他们在themeforest.net上一样
我该怎么做?
我正在一家商店的系统上,我有以下链接http://cmstutorials.org/shop/downloads/2793156879(原链接cmstutorials。组织/店/ downloads.php?下载= 2793156879)下载链接隐藏
我想要做的让用户下载与ID为2793156879相匹配的项目,而不显示该文件的实际链接。就像他们在themeforest.net上一样
我该怎么做?
wooohoooo
感谢很多人,这个网站的规则,我总是得到正确的答案:d
我贴这个的header.php上述包括ob_start();
和之前的标题功能ob_ get_clean();
可能是有用的人(注:第二个功能我添加了一个空间之前得到这样它会显示正确,不要忘了当u用它来删除它)
现在你应该标记最有用的答案......除非你不再需要帮助...... – IProblemFactory 2009-10-03 17:05:29
这个例子应该可以帮助您:
$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
适合您的文件。在发送任何实际输出(回声)之前
第一个示例应该可以工作,并且是必要的,以便浏览器知道该调用该文件的内容。 – 2009-10-03 20:10:06
头()必须被调用,否则会抛出此错误。
如果您我会尝试扩展这项服务,我建议你看看perlbal。它所做的一个巧妙的技巧是,你的应用程序可以发送一个特殊的头文件,告诉perlbal为另一台服务器提供静态文件。这样您就不需要绑定一个PHP线程并将位向下推送到客户端。
内容处理是好的,但另一种解决办法是使用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()你自己的产品代码
这个ID是一个常量? – 2009-10-03 16:20:07