得到它的工作各不相同,感谢来自伊沃P.
我开始启动通过发送到我的download.php文件名,文件扩展名,文件路径全部由*分开(*不会允许的文件名)。一个例子是:
download.php?f=myTextFile*txt*d:/storage/test/myTextFile.txt
然后,我爆炸$ _GET [ 'F']通过*,确保数组大小为3,然后设置内容标题:
$file_info = explode("*", $_GET['f'], 3);
if(is_file($file_info[2]) && count($file_info) == 3) {
header('Content-Description: File Transfer');
header("Content-Type: " . mime_content_type($file_info[2]));
header('Content-Disposition: attachment; filename="'.$file_info[0] . '.' .$file_info[1].'"');
header('Expires: 0');
header('Pragma: public');
readfile($file_info[2]);
}
,那就是工作为我解决!在txt,jpg和exe上测试 - 完美地工作。我已经等个性化我的项目的测试,以确保“F”是有效的(因此用户不能将地址栏和制作乱七八糟的东西搞砸了,看到real_escape_string),但是这是它的要点!
编辑感谢Bjorn:请记住,这允许服务器的完全访问,确保你个性化你自己的download.php接受你自己格式的输入(否则任何人都可以窃取你的php文件,js文件等!)
来源
2017-08-01 17:04:39
EML
什么是你的Web服务器软件? – Progrock
您通常会向资源公布一个Web路径,而不是本地文件路径。 – Progrock
我使用WAMP,在PHP代码我(与JS,HTML OFC一起),我保存在MYSQLDatabase – EML