Если пользователь нажимает на загружаемую ссылку, например
<a href="downloadable.txt">Download</a>
Есть ли способ на стороне клиента (html или javascript) изменить имя файла перед диалогом "Сохранить как"?
Если пользователь нажимает на загружаемую ссылку, например
<a href="downloadable.txt">Download</a>
Есть ли способ на стороне клиента (html или javascript) изменить имя файла перед диалогом "Сохранить как"?
Нет, вы не можете изменить это со стороны клиента (HTML или javascript). Вам нужно изменить его с сервера. Один из способов - использовать серверную сторону script, которая установит заголовок ответа HTTP Content-Disposition:
Content-Disposition: attachment; filename=somecustomname.txt
HTML5 предоставляет атрибут a[download]
, который позволяет переименовать файл. В этом примере загрузится link.txt
и переименуйте его something.txt
.
<a download="something.txt" href="link.txt">asdf</a>
Обратите внимание, что это работает только на URL-адресах одного и того же происхождения (т.е. не в разных доменах).
Вы можете использовать Filesaver.js script, написанный eligrey (Im, использующий angularjs в примере здесь) Вы можете добиться того же в классическом javascript, используя объект XmlHttpRequest
//In your html code , add these : ->
<script src="https://rawgit.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-animate.js"></script>
//In your Javascript:-
$http({
url: "url where the file is located",
method: "GET",
responseType: "blob"
}).then(function (response) {
saveAs(response.data,"newfilename.extension");
})