Я использую mod_xsendfile для загрузки / показа файлов на веб-странице. Это работает нормально, мне просто интересно, есть ли способ изменить имена файлов перед их отправкой?
Я думаю, мне придется временно скопировать / переименовать файл, чтобы справиться с этим? Что может быть неосуществимо для больших файлов (из-за тайм-аутов или, по крайней мере, времени ожидания).
Причина, по которой я спрашиваю, состоит в том, что у меня есть общедоступные файлы, к которым добавлен префикс пользователя, который поделился именем файла, поэтому вместо videofile.mp4
это скажет username__videofile.mp4
— не имеет большого значения, это не значит, что загрузчик уже не знает, кто поделился файлом, он просто немного облегчит, если имя файла будет только исходным именем файла.
Я предполагаю, что временное копирование / переименование — единственный способ сделать это?
Нет необходимости делать временное копирование или переименование.
Просто сделай это:
header("X-Sendfile: {$sourceFilename}");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"{$outFilename}\"");
Задавать $outFilename
на любое имя, которое вы хотите.
Работает с Apache 2.4.9.
Других решений пока нет …