Как выбирается имя загружаемого файла и есть ли способ изменить его? - PullRequest
2 голосов
/ 21 мая 2009

У меня есть ссылка на файл, которого нет на моем сервере:

<a href="history.nasa.gov/monograph15b.pdf">NASA</a>

Я хотел бы сделать так, чтобы, когда посетитель нажимал на ссылку для загрузки, имя, которое будет отображаться для PDF, было бы NASA.pdf, а не monograph15b.pdf.

Возможно ли это на любом языке?

Ответы [ 4 ]

3 голосов
/ 21 мая 2009

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

Обратите внимание, что это будет медленно, потому что вы будете повторно загружать файл из НАСА каждый раз, когда запускается ваша страница PHP.

<?php
$filename = "http://history.nasa.gov/monograph15b.pdf";
$outputfilename = "NASA.pdf";

header("Content-Type:  application/pdf");
header("Content-Disposition:  attachment; filename=\"" . basename($outputfilename) . "\";" );
header("Content-Transfer-Encoding:  binary");
readfile("$filename");
?>

Этот подход также требует, чтобы PHP был настроен так, чтобы fopen () мог обрабатывать чтение файла по HTTP.

2 голосов
/ 21 мая 2009

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

0 голосов
/ 21 мая 2009

Вам необходимо использовать любую серверную технологию, например ASP.NET. Где вы положили в кнопку на странице. При нажатии кнопки будут выполняться следующие задачи.

1.) Response.Clear ();

2.) Response.AddHeader ("Content-Disposition", "attachment; filename = Nasa.pdf");

3.) Response.ContentType = "application / octet-stream";

4.) Response.WriteFile (context.Server.MapPath ("history.nasa.gov/monograph15b.pdf")); // вам нужно установить действительно правильный путь для вашего приложения.

0 голосов
/ 21 мая 2009

Загляните в HTTP-заголовок Content-Disposition , это позволит вам указать имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...