Измените имя загрузки в javascript
Если пользователь нажимает на загружаемую ссылку, например
<a href="downloadable.txt">Download</a>
Есть ли способ на стороне клиента (html или javascript) изменить имя файла перед диалогом "Сохранить как"?
Ответы
Ответ 1
Нет, вы не можете изменить это со стороны клиента (HTML или javascript). Вам нужно изменить его с сервера. Один из способов - использовать серверную сторону script, которая установит заголовок ответа HTTP Content-Disposition:
Content-Disposition: attachment; filename=somecustomname.txt
Ответ 2
HTML5 предоставляет атрибут a[download]
, который позволяет переименовать файл. В этом примере загрузится link.txt
и переименуйте его something.txt
.
<a download="something.txt" href="link.txt">asdf</a>
Обратите внимание, что это работает только на URL-адресах одного и того же происхождения (т.е. не в разных доменах).
Ответ 3
Вы можете использовать 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");
})