你怎么能有两个文件名并用它们来服务呢?

时间:2011-08-11 21:42:47

标签: php file rename

我让用户上传文件,我将原始文件名的名称存储在一个字段中,另一个是重命名的文件名,以避免重复和其他风险。因此,当我让他们下载它时,我希望他们能够将其作为原始名称下载,但是当它在我们的服务器上时,我想使用重命名的版本。

样品:

$ 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

我试过这样做,但由于原始名称存储在数据库中,而实际文件名是重命名的,我该如何实现呢?

1 个答案:

答案 0 :(得分:5)

header("Content-disposition: attachment; filename=" . urlencode($original)); 
readfile($renamed);