Загрузка файла с другим именем для сохраненного имени - PullRequest
32 голосов
/ 27 октября 2009

Можно ли разрешить пользователю загружать файл с другим именем?

Например, есть файл с именем "4324ffsd34.jpg". Я хочу, чтобы люди загружали его через download.php, с другим именем (например, filetodownload.jpg), без переименования исходного файла.

Ответы [ 5 ]

56 голосов
/ 27 октября 2009

Конечно, используйте Content-disposition header

header('Content-Disposition: attachment; filename="filetodownload.jpg"');

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

header('Content-Disposition: filename="filetodownload.jpg"');
23 голосов
/ 27 октября 2009

Конечно, вы можете просто попробовать что-то вроде этого:

$original_filename = '4324ffsd34.jpg';
$new_filename = 'my_new_filename_is_detailled.jpg';

// headers to send your file
header("Content-Type: application/jpeg");
header("Content-Length: " . filesize($original_filename));
header('Content-Disposition: attachment; filename="' . $new_filename . '"');

// upload the file to the user and quit
readfile($original_filename);
exit;

Надеюсь, это поможет!

13 голосов
/ 20 сентября 2015

Есть и другой способ, если вы используете html5

<a href="link/to/my/file/with/a/name/i/dont/like.jpg" download="MyFile.jpg">Download</a>

Приветствия: 3

1 голос
/ 30 сентября 2017
<a href="4324ffsd34.jpg" download="filetodownload">Download</a>
0 голосов
/ 15 августа 2013

Ничего плохого в вышесказанном, но я должен был добавить:

ob_clean();
flush();

перед чтением файла

в противном случае я не могу открыть загруженный файл jpg / png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...