我让用户上传文件,我将原始文件名的名称存储在一个字段中,另一个是重命名的文件名,以避免重复和其他风险。因此,当我让他们下载它时,我希望他们能够将其作为原始名称下载,但是当它在我们的服务器上时,我想使用重命名的版本。
样品:
$ original =用户提供文件的名称
$ renamed =我们提供文件的名称
header('Content-type: application/octet-stream'); // concatenation
header("Content-disposition: attachment; filename=$original"); // double quotes
$filename="../../../../docs/doc/$renamed";
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
ob_clean();
flush();
readfile($renamed); // no quotes needed
我试过这样做,但由于原始名称存储在数据库中,而实际文件名是重命名的,我该如何实现呢?
答案 0 :(得分:5)
header("Content-disposition: attachment; filename=" . urlencode($original));
readfile($renamed);