У меня есть текст в скрытом текстовом поле. При нажатии кнопки я хотел бы, чтобы текст предлагался для загрузки в виде .txt
файла. Возможно ли это с помощью AngularJS или Javascript?
javascript
angularjs
никпонлайн
источник
источник
Ответы:
Вы можете сделать что-то подобное, используя
Blob
.в вашем контроллере:
чтобы включить URL:
Обратите внимание, что
Источник: MDN
источник
$scope.url
у меня не сработало. Мне пришлось использоватьwindow.location
вместо этого.download
Атрибут не поддерживается в IE любой версии или Safari , хотя caniuse.com/#feat=downloadПросто нажмите кнопку, чтобы загрузить, используя следующий код.
в html
В контроллере
источник
$http.get(...)
убедитесь, что вы установили,responseType:'arraybuffer'
как описано здесь: stackoverflow.com/questions/21628378/…Попробуй это
и посетите этот сайт, это может быть вам полезно :)
http://docs.angularjs.org/guide/
источник
download
атрибута, который по-прежнему не поддерживается ни в IE, ни в версии Safari. Проверьте это здесь: caniuse.com/#feat=downloadЭто можно сделать с помощью javascript без необходимости открывать другое окно браузера.
Замените url ссылкой на ваш файл. Вы можете поместить это в функцию и вызвать ее,
ng-click
если вам нужно запустить загрузку с помощью кнопки.источник
В нашем текущем проекте у нас был невидимый iFrame, и мне пришлось передать URL-адрес файла в iFrame, чтобы получить диалоговое окно загрузки. При нажатии кнопки контроллер генерирует динамический URL-адрес и запускает событие $ scope, в котором отображается пользовательский, который
directive
я написал. Директива добавит iFrame к телу, если он еще не существует, и установит для него атрибут url.РЕДАКТИРОВАТЬ: добавление директивы
Эта директива реагирует на событие контроллера, называемое
downloadFile
так что в вашем контроллере вы делаете
источник
Вы можете установить
location.href
в данных URI , содержащий данные , которые вы хотите , чтобы позволить загрузку пользователя. Помимо этого, я не думаю, что есть способ сделать это с помощью только JavaScript.источник
$location.href
изменен на$window.location.href
Я просто хотел бы добавить, что в случае, если он не загружает файл из-за unsafe: blob: null ... когда вы наводите курсор на кнопку загрузки, вы должны его дезинфицировать. Например,
источник
Если у вас есть доступ к серверу, рассмотрите возможность установки заголовков, как указано в этом более общем вопросе .
Читая комментарии к этому ответу, рекомендуется использовать более конкретный Content-Type, чем octet-stream.
источник
У меня была такая же проблема, и я потратил много часов на поиск разных решений, и теперь я присоединяюсь ко всем комментариям в этом сообщении. Надеюсь, это будет полезно, мой ответ был правильно протестирован в Internet Explorer 11, Chrome и FireFox.
HTML:
ДИРЕКТИВА:
В КОНТРОЛЛЕРЕ:
В СЕРВИСЕ:
НАЗАД (ВЕСНОЙ):
источник
Это сработало для меня в angular:
источник
data:text/plain;base64,${btoa(theStringGoesHere)}
Мне не нужен статический URL. У меня есть AjaxFactory для выполнения всех операций ajax. Я получаю URL-адрес с завода и привязываю его следующим образом.
Спасибо @AhlemMustapha
источник