Подтвердить что ты не робот

Как установить имя файла, загруженного из браузера?

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

Мой вопрос в том, есть ли способ указать имя файла для загрузки, используя только HTML? Поэтому пользователь загружает файл с именем "abc.txt", и я переименовываю его в "xyz.txt", но когда он загружается, я хочу, чтобы браузер сохранял файл как "abc.txt" по умолчанию. Если это невозможно с помощью только HTML, есть ли способ сделать это?

4b9b3361

Ответ 1

Невозможно найти способ в HTML. Я думаю, вам понадобится серверная сторона script, которая выведет заголовок содержимого. В php это делается следующим образом:

header('Content-Disposition: attachment; filename="downloaded.pdf"');

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

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

Фактически, сервер напрямую обслуживает ваши файлы, поэтому у вас нет возможности взаимодействовать с ним из HTML, так как HTML вообще не участвует.

Ответ 2

Когда они нажимают кнопку для загрузки файла, вы можете добавить атрибут HTML5 download, где вы можете установить имя файла по умолчанию.

Что я сделал, когда я создал файл xlsx и браузер хотел сохранить его как zip файл.

<a href="path/to/file" download="renamed.txt">Download</a>
<a href="downloads/export.xlsx" download="Data-Export.xlsx">Download Export</a>

Ответ 3

Ну, @Palantir ответ для меня, самый правильный способ!

Если вы планируете использовать это с несколькими файлами, я предлагаю вам использовать (или создать) PHP Download Manager.

НО, если вы хотите сделать это с одним или двумя файлами, я предлагаю вам вариант mod_rewrite:

Вам нужно создать или отредактировать файл .htaccess в папке htdocs и добавить это:

RewriteEngine  on 
RewriteRule ^abc\.txt$  xyz.txt

С помощью этого кода пользователи загружат данные xyz.txt с именем abc.txt

ПРИМЕЧАНИЕ. Убедитесь, что у вас уже есть "RewriteEngine on" в вашем файле, если да, добавьте только второй для каждого файла, который вы хотите перенаправить.

Удача;) (Извините за мой английский)

Ответ 4

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

Ответ 5

это очень легко, используя атрибут HTML5 download!

вот моя демонстрация codepen.

https://codepen.io/xgqfrms/full/GyEGzG/

мой ярлык на экране.

введите описание изображения здесь