Я пишу веб-приложение, которое, среди прочего, позволяет пользователям загружать файлы на мой сервер. Для предотвращения столкновений имени и организовывать файлы, я переименовываю их, после того как они помещаются на мой сервер. Путем отслеживания исходное имя файла я могу общаться с владельцем файла без них когда-либо знание, что я изменил имя файла на бэкэнде. Таким образом, пока они не идут, действительно загружают файл. В этом случае они запрашиваются загрузить файл незнакомым именем.
Мой вопрос, там какой-либо способ указать название файла, который будет загружен с помощью просто HTML? Таким образом, пользователь загружает файл под названием 'abc.txt', и я переименовываю его к 'xyz.txt', но когда они загружают его, я хочу, чтобы браузер сохранил файл как 'abc.txt' по умолчанию. Если это не возможно только с HTML, есть ли какой-либо способ сделать это?
Не могу найти способ в HTML. Я думаю, вам понадобится серверный скрипт, который будет выводить заголовок Content-Disposition. В php это делается следующим образом:
header('Content-Disposition: attachment; filename="downloaded.pdf"');
, если вы хотите указать имя файла по умолчанию, но не загружать автоматически, это работает.
header('Content-Disposition: filename="filetodownload.jpg"');
На самом деле, это сервер, который напрямую обслуживает ваши файлы, поэтому у вас нет возможности взаимодействовать с ним из HTML, поскольку HTML вообще не задействован.
Это нужно будет сделать на стороне сервера. Вам нужно будет где-нибудь сохранить старое имя файла в базе данных, а затем вы можете переместить его во временную папку с правильным именем и отправить этот файл пользователю. TBQH, я думаю, вам следует подумать о том, чтобы избегать конфликтов имен с подкаталогами и сохранять путь к каждому файлу в своей базе данных вместо старого имени / нового имени.
Ну, ответ @Palantir, для меня, самый правильный способ!
Если вы планируете использовать это с несколькими файлами, то я предлагаю вам использовать (или сделать один) PHP Download Manager.
НО, если вы хотите сделать это для одного или двух файлов, я предложу вам вариант mod_rewrite:
Вы должны создать или отредактировать ваш .htaccess файл в htdocs папке и добавить следующее:
RewriteEngine on
RewriteRule ^abc\.txt$ xyz.txt
С помощью этого кода пользователи будут скачивать xyz. txt данные с именем abc.txt
ПРИМЕЧАНИЕ: Проверьте, есть ли у вас уже "RewriteEngine on " в вашем файле, если да, добавьте только second для каждого файла, который вы хотите перенаправить.
Удачи ;) (Sorry for my english)