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

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

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

50
задан Sparafusile 23 June 2010 в 02:53
поделиться

3 ответа

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

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

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

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

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

60
ответ дан 7 November 2019 в 10:45
поделиться

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

0
ответ дан 22 September 2019 в 22:26
поделиться

Ну, ответ @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)

0
ответ дан 7 November 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: