2015-12-31 20 views
9

Şu an uzun zamandır araştırma yapıyorum ve sorunumu çözmek için net bir cevap bulamadım.http yanıt gövdesinden bir dosya indirin

Durum şudur: Bir sunucuya posta isteği gönderiyorum. Yanıt, gövdesindeki bir pcap dosyasının ikili dosyasını içerir. Dosya olarak nasıl indirebilirim?

Benim basitleştirilmiş kod:

... 
this.downloadPcap = function(timestamp){ 
    var start = timestamp-10; 
    var end = timestamp+10; 
    var requestData = {"start": start, "end": end}; 
    $http.post(serverUrl, requestData); 
} 

Bu bazı olayın zaman damgası almak bir tıklama tarafından tetiklenir ve sunucu öncesi ve kesin olaydan sonra 10 saniye arasında bir PCAP dosyası oluşturur edilir.

Uzun bir ikili ile yanıt alıyorum. Ayrıca :

İçerik-Uzunluk: 134772

Content-Type: Ben başlık şöyle olacaksa, tarayıcı otomatik olarak indirilmeye başlanacak söylendi

Şimdi

uygulama/pcap Bir dosya olarak yanıt. Olmaz.

Bu yüzden Blob ve FileSaver hakkında çok az şey okudum, ancak dinamik olarak oluşturulmuş dosyaları indirmenin daha kolay bir yolu olması gerektiğini düşünüyorum.

Lütfen birisi bana bir yöne işaret edebilir mi? Daha fazla kütüphane içermekten daha basit bir yol yok mu?

+0

bu cevabı http://stackoverflow.com/questions/3665115/create-a-file-in-memory-for-user-to-download-not-through-server#answer-18197341 deneyin – jcubic

+0

Content-Disposition üstbilgisini eklemeye çalıştınız mı? İçerik-Atma: ek; filename = "testfile.someext" ' – marekful

+0

Bir iframe içeren bir form önerebilirdim, ancak form verileri yerine açısal post json'undan beri, o kadar kolay olmayan ajax -> blob url metodunu kullanmanız gerekecek. – Musa

cevap

2

kunduz burada cevap beni işaret önceden

Teşekkür: mükemmel https://stackoverflow.com/a/20904398/5459561

İşleri! Kişisel olarak bir PCAP indiriyorum ve kodlama farklı, ama her şey işe yarıyor!

$ http hizmeti, aşağıda gösterildiği gibi iki geri arama yöntemine sahip bir söz verir.

$http({method: 'GET', url: '/someUrl'}). 
    success(function(data, status, headers, config) { 
    var anchor = angular.element('<a/>'); 
    anchor.attr({ 
     href: 'data:attachment/csv;charset=utf-8,' + encodeURI(data), 
     target: '_blank', 
     download: 'filename.csv' 
    })[0].click(); 

    }). 
    error(function(data, status, headers, config) { 
    // if there's an error you should see it here 
    }); 
İlgili konular