Вопрос по html, javascript – Изменить название загрузки в JavaScript

23

Если пользователь нажимает на загружаемую ссылку, например

<code><a href="downloadable.txt">Download</a>
</code>

Есть ли на стороне клиента (html или javascript) способ изменить имя файла перед диалоговым окном «Сохранить как»?

Возможный дубликат Изменение названия загрузки html Mr Lister

Ваш Ответ

3   ответа
68

HTML5 обеспечиваетa[download] атрибут, который позволяет переименовать файл. Этот пример будет скачатьlink.txt и переименуй егоsomething.txt.

​<a download="something.txt" href="link.txt">asdf</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​

Обратите внимание, что это работает только для однотипных URL-адресов (то есть не для разных доменов).

Больше не только Chrome, он также работает на моем Firefox 28.0. Вы можете увидеть список совместимости здесь: Caniuse.com / загрузить Bonswouar
Работает в Firefox начиная с версии 20.0, но только для файлов из того же домена (см. Developer.mozilla.org / EN-US / Docs / Web / HTML / элемент / ...) deterb
Caniuse.com / # Подвиг = скачать Теперь поддерживается в браузере Opera и Android. Akul Von Itram
@ ElonZito Должно работать на что угодно - это просто имя файла. Что-то не работает, что вы ожидаете? Dennis
трибут @download игнорируется, если серверная сторона отправила заголовок Content-Disposition с именем файла (как указано здесь: Developer.mozilla.org / CS / документы / Web / HTML / элемент / а ) Jimmmy
10

вы не можете изменить это со стороны клиента (HTML или javascript). Вам нужно изменить его с сервера. Одним из способов является использование сценария на стороне сервера, который установит заголовок HTTP-ответа Content-Disposition:

Content-Disposition: attachment; filename=somecustomname.txt
Хоть и не на стороне клиента, это эффект, который я хотел. Благодарность Intra
2

написанный eligrey (я использую 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");

})

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