Javascript/jQuery Kullanarak Dosya İndirme
Benim de burada belirtilen çok benzer bir gereksinimim var.
$('a#someID').click();` olduğunda kullanıcının tarayıcısının manuel olarak bir indirme başlatmasını sağlamam gerekiyor.
Ancak window.href
yöntemini kullanamıyorum, çünkü mevcut sayfa içeriğini indirmeye çalıştığınız dosya ile değiştiriyor.
Bunun yerine indirmeyi yeni pencerede/sekmede açmak istiyorum. Bu nasıl mümkün olabilir?
322
3
Görünmez bir
<iframe>
kullanın:Tarayıcıyı başka türlü işleyebileceği bir dosyayı (HTML veya metin dosyaları gibi) indirmeye zorlamak için, sunucunun dosyanın MIME Type değerini
application/x-please-download-me
veya alternatif olarak rastgele ikili veriler için kullanılanapplication/octet-stream
gibi saçma bir değere ayarlaması gerekir.Yalnızca yeni bir sekmede açmak istiyorsanız, bunu yapmanın tek yolu kullanıcının
hedef
niteliği_blank
olarak ayarlanmış bir bağlantıya tıklamasıdır.JQuery'de:
Bu bağlantıya her tıklandığında, dosya yeni bir sekmede/pencerede indirilecektir.
2019 modern tarayıcı güncellemesi
Birkaç uyarıyla birlikte şimdi önereceğim yaklaşım budur:
2012 orijinal jQuery/iframe/cookie tabanlı yaklaşım
Sizin durumunuza da yardımcı olabilecek jQuery File Download eklentisini (Demo) (GitHub) oluşturdum. Bir iframe ile oldukça benzer şekilde çalışır, ancak oldukça kullanışlı bulduğum bazı harika özelliklere sahiptir:
Güzel görsellerle kurulumu çok kolay (jQuery UI Dialog, ancak gerekli değil), her şey de test edildi
Kullanıcı, dosya indirme işlemini başlattığı sayfadan asla ayrılmaz. Bu özellik modern web uygulamaları için çok önemli hale geliyor
successCallback ve failCallback işlevleri, kullanıcının her iki durumda da ne göreceği konusunda açık olmanızı sağlar
JQuery UI ile birlikte bir geliştirici, kullanıcıya bir dosya indirme işleminin gerçekleştiğini bildiren bir modalı kolayca gösterebilir, indirme başladıktan sonra modalı dağıtabilir veya hatta bir hata oluştuğunu kullanıcıya dostça bir şekilde bildirebilir. Bunun bir örneği için Demo'ye bakın. Umarım bu birilerine yardımcı olur!
İşte eklentiyi kaynak vaatlerle kullanan basit bir kullanım örneği demosu. Demo sayfası]2 başka birçok 'daha iyi UX' örneği de içerir.
Zaten jQuery kullanıyorsanız, daha küçük bir snippet üretmek için bundan yararlanabilirsiniz Andrew'un cevabının jQuery versiyonu: