В угловом формате я хочу загрузить текстовый файл, содержащий csv userdata. Обычно у меня есть форма с post action, но я хочу, чтобы пользователь оставался на одной странице, но возвращал данные csv без каких-либо ссылок на страницы. Ниже приведена моя команда:
$http({
url: "api/getUserData",
method: "POST",
data:{user_id:app.user_id}
}).success(function(data, status, headers, config) {
// data gets returned here
}).error(function(data, status, headers, config) {
$scope.status = status;
});
Моя проблема заключается в том, что "данные", которые возвращаются из сообщения, представляют собой файл csv. как я могу получить данные на самом деле "загрузить" на компьютер пользователя вместо того, чтобы жить в javascript? Возможно ли это?
Вот ссылка на решение. Он использует API-интерфейс HTML5 FileSaver для сохранения файла в виде BLOB
Вы можете сделать это:
наконец, удалите вставленный элемент.
$http({
url: "api/getUserData",
method: "POST",
data:{user_id:app.user_id}
}).success(function(data, status, headers, config) {
// data gets returned here
var anchor = angular.element('<a/>');
angular.element(document.body).append(anchor); // Attach to document
anchor.attr({
href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data),
target: '_blank',
download: 'myFileName.csv'
})[0].click(); // fire a click event.
anchor.remove(); // Clean it now ...
}).error(function(data, status, headers, config) {
$scope.status = status;
});