我正在尝试使用readfile()下载文件;在PHP但我遇到了麻烦,这是我的代码:
<?php
$getdir = $_GET['dir'];
$getdoctype = $_GET['doctype'];
$getfile = $_GET['filename'];
$dir = "/var/www/uploads/$getdir/$getdoctype/";
$type = mime_content_type( $dir . '/' . $getfile );
$contents = file_get_contents($dir . '/' . $getfile);
if (file_exists($getfile)) {
header('Content-Type: ' . $type);
header('Content-Disposition: attachment;filename=' . $getfile);
readfile($getfile);
}
else{
echo "File Not Found";
}
?>
我做错了什么?我想下载存储在$ getfile变量中的文件。我想使用所有文件类型和所有文件大小,这就是为什么我这样做。
我点击文件时遇到的错误是:“找不到文件”,根据我的代码。但确实存在。
另请注意,托管这些文件的网站已启用SSL
答案 0 :(得分:2)
您应该尝试替换此代码:
file_exists($getfile)
=&gt; file_exists($dir . '/' . $getfile)
readfile($getfile);
=&gt; readfile($dir . '/' . $getfile);
但是使用$_GET
参数从文件系统加载文件是非常危险的,不要在公共网站上使用此代码。
答案 1 :(得分:1)
您没有正确指向该文件。
<?php
$getdir = $_GET['dir'];
$getdoctype = $_GET['doctype'];
$getfile = $_GET['filename'];
$dir = "/var/www/uploads/$getdir/$getdoctype/";
if (file_exists($dir . $getfile)) {
$type = mime_content_type( $dir . $getfile );
header('Content-Type: ' . $type);
header('Content-Disposition: attachment;filename=' . $getfile);
readfile($dir . $getfile);
}
else{
echo "File Not Found";
}
?>