2015-02-10 2 views
2

Сейчас я просто пытаюсь получить что-нибудь для работы. Мой браузер Chrome 40.022. Когда я нажимаю ссылку для загрузки, она инициирует загрузку, но затем с ошибкой Failed. No file. Что я делаю не так? Это браузер?JavaScript to .csv download failed: «Failed. No File»

Javascript:

var fileName = "data.csv"; 
var csv = "abc, def, hij"; 
//I'm partially using angular in this page... 
$scope.link3 = 'data:text/csv;base64,' + btoa(csv); //forgive the variable name 

HTML:

<a ng-href="aap.link3" download="data.csv">Hello</a> 
+0

Да. Все содержится на одной странице. – Matt

+0

О, извините, я не понял. Нет, я не думал, что мне нужно сделать что-нибудь подобное. У меня сложилось впечатление, что все было на стороне клиента. – Matt

+0

Я думаю, что я полностью потерян. Я думал, что объявление имени просто сообщает клиенту через html: «Это то, что будут вызывать данные Javascript, которые вы загружаете». (где данные - это всего лишь некоторый массив, переданный в 'blob'. Я полностью не отмечен? – Matt

ответ

0

Я создал jsfiddle для вашей проблемы. Есть 2 проблемы с вашим кодом:

  1. В вашем случае ng-href данные должны быть интерполированы
  2. Вы должны добавить data в белый список для Href attrtibute, иначе она будет быть преобразована в «небезопасные».

https://jsfiddle.net/8o1v1uym/

+0

Когда я запускаю ваш код, система отбрасывает назад csv, в контроллере не определена? – JnL

+0

Каково значение Приложение app.config? – JnL

+0

Не понял ваш первый вопрос, уточните его. Часть 'app.config' должна объявлять' data: xyz' протокол как «безопасный» для использования. есть эта часть кода, директива AngularJS, например 'ng-href', попытается изменить исходный url, добавив в нее' unsafe'. Например 'unsafe: data: text/csv ...' – 6220119