所以,在另一个QUESTION中,我得到了这个答案:
$filename="filetodownload.xyz";
$cf = realpath("/non-webaccessible-folder/".$filename);
$file=$cf;
header('Content-Disposition: attachment; filename="' . basename($cf) . '"');
header("Content-Length: " . filesize($cf));
header("Content-Type: application/octet-stream");
readfile(realpath($cf));
我能够通过使用顶部标题行来实现我的目的:
header('Content-Disposition: attachment; filename="' . basename($cf) . '"');
我对整个解决方案有一些问题,以增加我的理解:
1。使用basename()
简单地从文件名中删除路径的目的是什么?
2. realpath()
的目的是什么?在我的使用中,它似乎没有任何区别。根据我所发现的情况,它似乎只是标准化了'文件路径输入。这是对的吗?
3。我似乎不需要最后三行来完成这项工作:
header("Content-Length: " . filesize($cf));
header("Content-Type: application/octet-stream");
readfile(realpath($cf));
我需要它们吗?他们在做什么?我应该注意,我只是使用localhost进行测试,以防万一。
使用此方法提供文件下载时,我应该考虑哪些安全因素?