2012-06-06 43 views
15

Dinamik olarak oluşturulmuş bir dosyayı bir sunucudan (ASP.NET) istemciye yüklememi gerektiren ilginç bir görev var. İstemci tarafında sadece JavaScript (jQuery) ve istemci, verilerin nasıl dışa aktarılacağını özelleştirmek için çok fazla parametre üretebiliyor.Dosyayı sunucudan indirmenin en iyi yolu nedir

Dosyayı sunucudan indirmenin en iyi yolu nedir? here tarif edilen veya this one gibi basit bir sayfa gibi bir WCF servisini kullanmalı mıyım?

Sayfayı yeniden yüklemeden bir dosyayı nasıl indireceğimi bilmiyorum ($ .ajax'ın bu durumda çalışacağından emin değilim). Birisi bana bu konuda biraz yön verebilir misiniz? Teşekkürler.

+2

Bu sorunun bu soruyla ilişkili olduğunu düşünüyorum: http://stackoverflow.com/questions/3749231/download-file-using-javascript-jquery –

cevap

19

Önce oluşturacağınız bilmek .ashx

Let Eğer download.ashx indirmek üzere dosya varsa ve javascript geçmesi için bazı parametreleri ilke olduğunu söylemek bir işleyici, örneğin download.ashx?p1=8827&p2=8831 gelen dosya oluşturabilirsiniz.

Sonra javascript üzerinde basit

window.location = "download.ashx?p1=8827&p2=8831"; 

olarak bir yönlendirme yapabilir veya alternatif için window.open kullanabilirsiniz aynı

window.open("download.ashx?p1=8827&p2=8831"); 

ve dosya indirme başlayacak düşünüyorum.

Sadece size kolu eg ekin başlığını ve doğru ContentType'ı set emin olun:

HttpContext.Current.Response.ContentType = "application/octet-stream"; 
    HttpContext.Current.Response.AddHeader("Content-Disposition", 
        "attachment; filename=" + SaveAsThisFileName); 

Basit ve net, hem test edilmiş ve çalışma.

Ayrıca şu yanıtla ilginizi çekebilir: How to handle errors.

+0

Hata işleme nasıl yapılır? Örneğin, .ashx dosyasına atılan bir istisnayı nasıl ele alırsınız? – Steve

+1

@Steve Eğer bir hatayla karşılaşırsanız, sayfayı bulamayın, hatayı kaydedin ve düzeltin. – Aristos

+0

Bu işe yarıyor, ama eğer url uzunluğu çok uzunsa? –

İlgili konular