2013-03-28 40 views
7

AngularJS ön çerçeveyi kullanıyorum ve JSON göndermek ve almak için bir arka uç sunucusu olarak nodejs/express kullanıyorum. Arka uç, büyük bir JSON nesnesini ön tarafa gönderdi ve JSON nesnesini CSV biçimindeki ön uçtan indirip yüklemediğimi merak ediyordum.İstemci Tarafı Json olarak CSV

Veri, bir açısal denetleyicide $scope.data kapsam değişkeninde json olarak saklanır. Ardından, verileri $scope.CSVdata değişkenindeki CSV biçimindeki bir dizeye dönüştürdüm. CSVdata’yı istemci tarayıcısından nasıl indirebilirim?

nodejs'nin CSV biçiminde bir dosya göndermek için ayarlanabileceğini biliyorum, ancak arka ucun temiz bir JSON API olmasını sağlamak güzel olurdu.

+0

Neden onu aldıktan sonra yalnızca istemci tarafında dönüştürmüyorsunuz? Düğüm kullandığınızdan beri, aynı kod yine de aynı olacaktır ve bu şekilde API'nizi tam olarak JSON'da tutabilirsiniz. Ayrıca, tam olarak ne soruyorsun? JSON'u CSV'ye dönüştürme veya verileri Angular'deki bir indirme düğmesine mi, yoksa her ikisine mi? –

+0

Bir müşteriden indirmek için açısaldan nasıl CSV biçiminde veri alacağımı soruyorum. Onu CSV biçimine dönüştürmekten daha az endişeliyim. Soruyu bir saniyede güncelleyeceğim. – GTDev

+0

Burada gerçekten iyi bir çözüm var: http://stackoverflow.com/a/13903928/1804678 – Jess

cevap

8

this post Referans Bunu kullanarak angularjs yapılabilir nasıl bir araya kısa tanıtımı atılan ettik: Bir hizmetin başvurulan Base64 kodunu sarılmış ettik

JavaScript Demo (Plunker)

ve aşağıdaki şekilde kullanmak : açıklamalarda belirtildiği ancak bu yönteme

$scope.downloadCSV = function() { 
    var data = Base64.encode($scope.CSVData); 
    window.location.href = "data:text/csv;base64," + data; 
}; 

Orada are some disadvantages. Bu konuyla ilgili Wikipedia sayfasından bazı mermi noktaları çıkardım. Tam liste için oraya git.

  • Veri URI'ları ayrı dolayısıyla kodlanmış veri içeren belgeler tekrar indirilmektedir her zaman indirilir, onların içeren belgeleri (örneğin CSS veya HTML dosyaları) önbelleğe alınmaz.
  • Internet Explorer 8, veri URI'lerini maksimum 32 KB uzunluğa sınırlar. (Internet Explorer 9'da bu sınırlama yoktur)
  • IE 8 ve 9'da, veri URI'leri yalnızca görüntüler için kullanılabilir, ancak gezinme veya JavaScript tarafından oluşturulan dosya yüklemeleri için kullanılamaz. [7] Baz64 kodlu veri URI'leri, ikili eşdeğerine göre 1/3 kat büyüklüğündedir. (Ancak, HTTP sunucusunun gzip kullanarak yanıtı sıkıştırması durumunda bu yük% 2-3'e düşürülür)
  • Veri URI'leri normal bağlanmış bir dosya olarak bir dosya adı taşımamaktadır. Kaydederken, belirtilen MIME türü için varsayılan bir dosya adı genellikle kullanılan 'dur.
  • . . . ]
+0

Bu yaklaşımı kullanmak (İstemci tarafı indirme) sınırlı veri boyutudur? Sanirim oyle. – Jess

+0

Bu yaklaşımın dezavantajları: http://en.wikipedia.org/wiki/Data_URI_scheme#Disadvantages – Jess

+0

Ek bilgi için teşekkürler - Cevabını içerecek şekilde güncelledim. –

İlgili konular