我所做的服務端返回csv格式時,我打電話跟$ HTTP GET與角度的服務,如果用戶點擊按鈕..angularjs CSV下載到本地
So the return is like 1,2,3,4,5,6,7,8,9,10
什麼是給最好的辦法用戶的方式來保存它們的本地機器?
我所做的服務端返回csv格式時,我打電話跟$ HTTP GET與角度的服務,如果用戶點擊按鈕..angularjs CSV下載到本地
So the return is like 1,2,3,4,5,6,7,8,9,10
什麼是給最好的辦法用戶的方式來保存它們的本地機器?
有兩個選項
1)從您的服務器發送csv。
2)數據URI。我想這是你要求的。下面是一個例子
/**
* @param{string} content The contents of a file to download.
* @param{string} fileName The name to save the file as on the user's computer.
*/
function(content, fileName) {
var dataUrl = 'data:text/csv;utf-9,' + encodeURI(content);
var link = document.createElement('a');
angular.element(link)
.attr('href', dataUrl)
.attr('download', fileName) // Pretty much only works in chrome
link.click();
}
嘿嘿。 UTF-9。 http://en.wikipedia.org/wiki/UTF-9_and_UTF-18 –
你可以試試Alasql庫,它可以在CSV格式保存數據的一行:
function myCtrl($scope) {
$scope.filename = "mydata.csv";
$scope.cities = [{city:"Odessa",population:100000},
{city:"Voronezh",population:201022},
{city: "Paris", population: 3000000}];
$scope.saveCSV = function(filename, content) {
alasql('SELECT city, population INTO CSV("'+$scope.filename+'",{headers:true}) FROM ?',
[$scope.cities]);
};
};
見the full example code中的jsfiddle。
在這個例子中,Alasql使用SELECT操作符從數據數組中選擇需要的字段(AngularJS創建$$ hashKey字段,這可能不需要用戶)。如果你沒有這些數據,使用 簡單地導出爲CSV與檔案:
alasql('SELECT * INTO CSV('mydata.csv') FROM ?',[$scope.data]);
,如果你的服務器已經創建的格式是可以接受您的用戶數據,可以在按鈕即可將其轉發到該網址(確保mime類型是正確的,當然!) –
您最好將下載推送給使用服務器的用戶。你有什麼樣的服務器體系結構(例如PHP或Java或Node) –
但棘手的問題是服務只能接受POST。如果服務可以接受GET,那麼重定向用戶是沒有問題的。但是我怎樣才能用POST做? – MomentH