2015-05-04 9 views
6

Czy jest możliwe, aby zwykłe znaczniki zakotwiczenia wskazywały na pliki otwierające okno dialogowe do zapisania pliku? Tak jak przeglądałaby przeglądarka internetowa.Zapisz plik ze znacznikiem zakotwiczenia za pomocą elektronu

Na przykład:

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

i posiadające ten znak kotwicy wyzwoleniem Zapisz plik-dialog na kliknięcie?

Próbowałem już używać file://absolute-path-to-the-dir/documents/somefile.pdf i chce otworzyć plik w aplikacji, zamiast go pobrać.

Aktualizacja: W nowszej wersji Electron, niż kiedy pisałem to pytanie, zachowanie jest takie, jak chcę, otwiera się okno, które prosi użytkownika o zapisanie pliku.

Jednak w przypadku linków zewnętrznych i chcących zachować okno Electron tylko dla linków wewnętrznych i otwierać zewnętrzne w domyślnym wyborze systemu operacyjnego, odpowiedź Joshua Smith może zrobić dokładnie to.

+0

Przy odrobinie szczęścia znalezienie rozwiązania tego problemu? Szukam tego samego. – MobileSam

+0

@MobileSam Brak dotychczas. Porzuciłem próbę teraz. Postaram się znaleźć odpowiedź, gdy będę mieć więcej czasu. –

+2

Po kilku badaniach znalazłem odpowiedź tutaj: https://discuss.atom.io/t/how-to-access-atom-shell-apis-within-angularjs- for-opening-a-file-save -dialog/14376/4 – MobileSam

Odpowiedz

2

Co robię jest dwojaki.

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

To jest tak, że gdy strona w mojej aplikacji chce otworzyć nowe okno, stanie się to w rzeczywistej przeglądarce. Jest to również przydatne do otwierania plików PDF i innych.

Następnie po prostu upewniam się, że wszelkie linki do pobierania używają parametru target = _blank lub window.open(), a pobieranie odbędzie się w przeglądarce użytkownika.

+1

Dla nowych elektronów: powłoka jest wymagana ("elektron"). –

Powiązane problemy