Как вы можете иметь два имени файла и использовать любое из них? - PullRequest
0 голосов
/ 12 августа 2011

Я разрешаю пользователям загружать файл, и я храню имя исходного имени файла в одном поле, а другое - переименованное имя файла, чтобы избежать дублирования и других рисков.Поэтому, когда я позволяю им скачать его, я хочу, чтобы они могли загружать его как оригинальное имя, но когда он находится на наших серверах, я хочу использовать переименованную версию.

Пример:

$ 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 Ответ

5 голосов
/ 12 августа 2011
header("Content-disposition: attachment; filename=" . urlencode($original)); 
readfile($renamed);
...