我必须在我的网站上显示一个下载链接,将其链接到另一个域上托管的文件。我使用以下方法。
1)从数据库中选取实际的URL
$fileDownloadLink = "http://whatever.com/thefile.docx";
2)对网址进行编码并将其作为参数传递给download.php
$shortUrl = base64_encode($fileDownloadLink);
<a href="<?php echo "http://www.mydomain.net/download.php?session=".$shortUrl;?>" target="_blank">Download Please</a>
3)Download.php解码传递的字符串并尝试读取文件。
<?php
$str = $_GET["session"];
$path = base64_decode($str);
$mm_type="application/octet-stream";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($path)) );
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header("Content-Transfer-Encoding: binary\n");
readfile($path);
exit();
?>
但我从download.php
收到此错误不可接受!
不能提供所请求资源的适当表示 在这台服务器上找到。此错误由Mod_Security生成。
请帮忙。
答案 0 :(得分:0)
您可以在download.php;
中重定向$str = @$_GET["session"];
$path = base64_decode($shortUrl );
header("Location: $path");
exit();