У меня есть сайт, где пользователям предлагается загружать файлы с внешних ресурсов. Поскольку имена внешних файлов хэшируются, и пользователь загружает несколько файлов, пользователям очень трудно узнать, какой загружаемый файл достигает того ресурса, который он запрашивал. Например, имя файла fdae442dafe42.zip
может быть production-resources.zip
.
Я ищу способы получить его, чтобы браузер загружал файл под другим именем. Ниже приведены некоторые из моих идей и почему они не сработают, но вы можете найти обходной путь.
Просто заметка, я не имею никакого контроля над внешним ресурсом. Я не смогу вносить изменения в заголовки или что-то еще. Мой сервис - это веб-сайт, который в основном предназначен для пользователей настольных компьютеров. Решения для Android и iOS не будут такими уж полезными.
Атрибут загрузки
Этот метод некоторое время работал в Google Chrome и Firefox, но затем они начали следовать спецификации HTML5 W3. Внешний ресурс требует отправки заголовка Content-Disposition
, в котором Google Chrome и Firefox ранее не проверяли.
Скачать PHP Proxy
Я знаю, что мог бы сделать так, чтобы PHP-скрипт сделал запрос к внешнему ресурсу, а затем доставил его конечному пользователю, изменив заголовки и имя в соответствии со своими потребностями. Проблема в том, что у сайта высокий трафик, и каждый пользователь загружает около 1-2 ГБ данных. Мои серверы не могут обрабатывать этот тип трафика, и обновление сервера, вероятно, будет слишком дорогостоящим.
Переименование файлов с помощью внешнего приложения
Я подумывал об использовании внешнего приложения (возможно, расширения Chrome/Firefox), которое переименует файлы после завершения загрузки. Но, учитывая, что достаточно большая аудитория - это посетители, посещающие один раз, попросить их загрузить приложение или расширение очень маловероятно.
Flash или Java Embedded Solutions
Я рассматриваю возможность использования встроенного файла Java или Flash, который будет обрабатывать загрузку файлов, но я не знаю достаточно ни об одной платформе. Из того, что я могу сказать, Flash не имеет большого контроля над файловой системой пользователя, так что это может быть проблемой. Java сможет выполнить эту задачу, но я действительно надеялся, что мне не придется использовать Java, поскольку он часто небезопасен и требует большой загрузки для его установки (такая же проблема, как и у идеи External Software).
Если у вас есть какие-либо идеи о том, что я мог бы сделать, чтобы решить эту проблему, они будут очень признательны. Я не ищу какой-либо код, просто идеи о том, как я смогу выполнить вышеуказанную задачу. Я хотел бы поблагодарить вас всех за ваше время и опыт.