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

Имя файла загрузки http

Могу ли я узнать, как назначить имя файла для загрузки файла a-href.

<a href="#" onclick="location.href='http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml'; return false;">get-file</a>

Если щелкнуть правой кнопкой мыши и сохранить как: службы, работающие в фоновом режиме, вернут содержимое test.xml, и пользователь сможет сохранить его локально. Но здесь каждый раз пользователю нужно ввести имя файла для сохранения. Вместо этого я думаю потянуть test.xml. Могу ли я узнать, как указать браузеру использовать "test.xml" в качестве имени файла для загрузки?

Будет ли работать настройка заголовков для ответа HTTP? если так, могу ли я знать, как мы можем это сделать?

4b9b3361

Ответ 1

Вам нужно добавить заголовок ответа HTTP "Content-Disposition"

Response.AppendHeader("content-disposition", "attachment; filename=\"" + fileName +"\"");

Приветствия.

Ответ 2

Заголовок HTTP Content-Disposition позволяет предложить имя файла.

Поле заголовка ответа Content-Disposition […] можно использовать для присоединения дополнительных метаданных, таких как имя файла, которое будет использоваться при локальном сохранении полезной нагрузки ответа.

Если вы посмотрите на BNF, то увидите, что имя файла указано в виде quoted-string в quoted-string:

quoted-string = (<"> * (qdtext | quoted-pair) <">)

Это будет правильный пример:

Content-Disposition: attachment; filename="fname.ext"

Пожалуйста, обратите внимание, что одинарные кавычки ' не являются действительными. Если вам нужно включить кавычки (") в ваше имя файла, вы можете использовать \". Однако RFC-6266 предлагает избегать включения цитат:

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

Ответ 3

В современных браузерах вы также можете использовать атрибут загрузки по тегу ссылки:

<a href="#" onclick="location.href='http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml'; return false;" download="test.xml">
    get-file
</a>

Вы можете проверить его поддержку на я могу использовать