有没有办法强制指定任何给定文件而不给它标题?我所拥有的是少数不同的文档和其他文件类型,客户希望根据请求提供下载,但是他们希望尽可能地模糊文件路径。不幸的是,我不知道大多数文件类型是什么,他们想要一个有点动态的能力。我没有收到这件作品的报酬。所以,如果可能的话,我正在寻找快速和肮脏的东西。有些东西并没有强迫我为每种文件类型提供一个逻辑,所以我可以为所讨论的文件类型构建正确的标题,以便正确下载..
有没有办法实现这个目标?
答案 0 :(得分:2)
好吧,如果我提出你的问题,你想要一个简单的方法来使用php脚本下载任何类型的文件。
首先,您有几种方法可以做到这一点......
最不安全的人: - 你有一个存储所有文件的目录(比如'files /')。您创建一个接收参数(文件名)的脚本,然后在该目录中查找该文件。这是不安全的,因为任何人都可以尝试下载任何文件,并且访问子目录只是将“../”作为参数传递。你必须在那里做一些解析。
其他选项是使用数据库,存储文件名并将它们与一个唯一的ID相关联,稍后你会得到如下脚本:download.php?id = 1并下载DB id为1的文件。这是我认为最好的。
无论如何,你可以选择你认为最好的东西,强制下载对话框的代码应该是这样的:
$file = "my_file.zip"; // this is what you will get from a param (i.e. ?file=my_file.zip) or from DB query
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file"); // this is totally needed
header("Content-Length: ".filesize($file));
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
readfile($file);
这应该可以解决问题。
祝你好运!