Как я могу загрузить файлы с помощью AngularJS?

Я хочу перечислить все файлы в <a></a>, нажав на него, нам нужно загрузить его из соответствующей папки.

Я пробовал следующий код

<div ng-repeat="file in files"> 
 <a download="{{file.name}}" href="/path of the file">{{file.name}}</a> 
</div>

Как я могу этого добиться?

Может кто-нибудь мне помочь?


comment
Срочно это не важно. Что нам нужно, так это то, как проложены пути к этим файлам; и что сейчас не работает. (Когда вы нажимаете на файл в ссылке, он уже загружается — это просто интернет. Что не работает с тем, что вы пытаетесь сделать в Angular?   -  person George Stocker    schedule 06.03.2014
comment
Я только что прочитал каталог и перечислил все файлы в представлении. Но я не знаю, как его загрузить. Пожалуйста, просмотрите обновленный вопрос.   -  person prince    schedule 06.03.2014
comment
Не могли бы вы показать использование вашего кода? В нынешнем виде реальная проблема, с которой вы столкнулись, трудно различить. Уже сейчас из-за Интернета, если вы правильно указываете ссылку на файл, доступный для загрузки, браузер попытается загрузить его, когда вы нажмете на него. Что не работает?   -  person George Stocker    schedule 06.03.2014
comment
Помогает ли вам этот уже заданный вопрос о переполнении стека? stackoverflow.com/questions/16342659/ Кроме того, разве href не должен быть частью переменной file, поскольку он представляет собой путь к файлу?   -  person George Stocker    schedule 06.03.2014
comment
Я настроил рабочий пример, используя ваш код на этой скрипке, единственная разница (минус то, что я не вижу в вашем коде) заключается в том, что для href установлено значение {{ file.path }}, я думаю, что это может быть вашей проблемой.   -  person jnthnjns    schedule 06.03.2014
comment
Asok, Но при нажатии на тег привязки страницы перенаправляются прямо на эту ссылку. Но в моем случае страница должна быть такой же и файл должен быть загружен. Также файлы будут на локальной машине. Здесь, в примере, вы загружаете его из Интернета   -  person prince    schedule 06.03.2014
comment
@prince Наличие атрибута download в теге <a> не перенаправляет пользователя в местоположение href, оно просто загружает то, что находится в этом месте. Пока тег href имеет прямую ссылку на фактический файл, не имеет значения, находится ли он на локальном компьютере или на сервере. Под локальным я предполагаю, что вы имеете в виду, что файл хранится на локальном сервере или общем компьютере.   -  person jnthnjns    schedule 06.03.2014
comment
@Asok: Насколько я знаю, атрибут загрузки устанавливает только удобочитаемое имя для искаженного имени файла. Посмотрите здесь: davidwalsh.name/download-attribute. Поскольку file.name==file.name здесь бесполезно. Я бы попробовал ‹a href=/path of the file/{{file.name}}›‹/a› и посмотреть, что произойдет. (Обратите внимание на косую черту в конце пути.) Если это не работает, проверьте имя файла в источнике с помощью firebug, скопируйте его в адресную строку и посмотрите, не появится ли ошибка «Файл не найден».   -  person mainguy    schedule 06.03.2014
comment
@mainguy Я понятия не имею, что ты пытаешься мне объяснить. Атрибут загрузки ПРОСТО объявляет определенное имя для загружаемого файла, вам даже не нужно устанавливать значение. В моей скрипке я просто поместил ее в качестве полного примера. Вы можете поставить download="I have been downloaded", расширение не требуется.   -  person jnthnjns    schedule 06.03.2014
comment
Не удается связаться с jsfiddle (как часто). Я просто показывал, что работает безупречно на наших сайтах. Также я принял вас за ОП, извините!   -  person mainguy    schedule 06.03.2014
comment
@prince, поскольку скрипт Asoks не работает (он показывает только изображение, а не показывает диалог загрузки, поскольку тип файла jpg регистрируется в каждом браузере). Мне нужно знать, какие типы файлов вы хотите предложить для загрузки, и есть ли у вас доступный серверный язык php, node или что-то еще)?   -  person mainguy    schedule 06.03.2014
comment
@mainguy Кстати, я только что обнаружил, что, хотя я читал, что Firefox поддерживает download, он, кажется, только отображает, в Chrome моя скрипка работает отлично. IE не поддерживает download и действует так же, как Firefox.   -  person jnthnjns    schedule 06.03.2014


Ответы (1)


Если у вас есть тег привязки, который вы не хотите обрабатывать с помощью angular, вам нужно будет использовать target="_self" или другую допустимую цель.

см. документацию $location

Это должно сработать для вас:

<div ng-repeat="file in files"> 
 <a target="_self" download="{{file.name}}" href="/path of the file">{{file.name}}</a> 
</div>

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

Вот плункер с примерами.

person Jim Schubert    schedule 06.03.2014