2015-05-04 16 views
6

Dosyayı kaydetmek için bir iletişim kutusu açan dosyalara işaret eden normal bağlantı etiketlerinin olması mümkün mü? Bir web tarayıcısı gibi.Elektron kullanarak çapa etiketinden dosya kaydetme

<a download href="documents/somefile.pdf">Download</a> 

Ve tıklamada bir kaydet dosya iletişim tetikleyen o çapa-etiketi olan Örneğin:

?

file://absolute-path-to-the-dir/documents/somefile.pdf kullanmayı denedim ve dosyayı uygulamayı indirmek yerine uygulamayı açmak istiyor.

Güncelleme: Electron'un sonraki bir sürümünde, bu soruyu yazdığımda kullandığımdan daha sonraki bir davranışta, davranışı istediğim gibi kullanıyorum, kullanıcının dosyayı kaydetmesini isteyen bir pencere açılır. Bununla birlikte, dış bağlantılar söz konusu olduğunda ve Elektron penceresini yalnızca iç bağlantılar için tutmak ve varsayılan işletim sistemi seçiminde harici olanları açmak istemek için, Joshua Smith'in yanıtı tam olarak bunu yapabilir.

+0

Bunun için bir çözüm bulma şansı var mı? Aynı şeyi yapmaya çalışıyorum. – MobileSam

+0

@MobileSam Henüz bir yere yok. Şimdilik denemekten vazgeçtim. Daha fazla zamanım olduğunda tekrar bir cevap bulmaya çalışacağım. –

+2

Bazı araştırmalardan sonra burada bir cevap buldum: https://discuss.atom.io/t/how-to-access-atom-shell-apis-within-angularjs-for-opening-a-file-save -dialog/14376/4 – MobileSam

cevap

2

Yaptığım şey iki yönlüdür. Benim app bir sayfa yeni bir pencere açmak istediğinde, o gerçek bir tarayıcıda gerçekleşmesi gerekir böylece orada

mainWindow.webContents.on('new-window', function(event, url) { 
    event.preventDefault(); 
    console.log("Handing off to O/S: "+url); 
    shell.openExternal(url); 
}); 

. Bu, PDF'leri ve benzerlerini açmak için de iyidir.

Öyleyse, herhangi bir indirme bağlantısının target = _blank veya window.open() işlevini kullandığından ve indirme işleminin kullanıcının tarayıcısında gerçekleşeceğinden emin oluyorum.

+1

Elektrondan yeni olanlar için: kabuk gereklidir ("elektron"). –

İlgili konular