2013-10-30 5 views
6

Obecnie mam ten kod:Pytając użytkownika, czy zapisać plik przy użyciu okna dialogowego "Zapisz jako"?

function download(filename, text) { 
     var pom = document.createElement('a'); 
     pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); 
     pom.setAttribute('download', filename); 
     pom.click(); 
} 

download('test.html', string); 

ciąg zawiera dużo kodu HTML, który zostanie napisany w a.html pliku. Powyższy kod działa idealnie. Po kliknięciu przycisku przeglądarka (chrome) automatycznie pobiera plik html z zawartością napisu. Teraz, zamiast chrome pobierać plik automatycznie, powinien otworzyć okno dialogowe Zapisz jako i zapytać użytkownika o lokalizację i nazwę pliku, a następnie pobrać go do tej lokalizacji. Szybka prosta odpowiedź byłaby naprawdę doceniana.

+1

Myślę, że zawsze będzie używać domyślnego zachowania, ponieważ tego oczekuje użytkownik. –

+0

Cóż, w moim przypadku, użytkownik powinien mieć możliwość ustawienia lokalizacji i nazwy pliku, który ma zostać zapisany ... –

+0

Stanie się to automatycznie, jeśli przeglądarka nie nakazała przeglądarce, aby zrobiła to inaczej. Ale może możesz wymusić to poprzez podanie innego typu mime poprzez atrybut 'type' dla linku. – CBroe

Odpowiedz

4

Moja przeglądarka została ustawiona tak, aby automatycznie pobierać wszystkie pliki w domyślnej lokalizacji, dlatego nie tylko ten plik, ale wszystkie inne pliki z mojej przeglądarki zostały pobrane bezpośrednio, bez wyświetlania monitu o zapisanie. Zmiana ustawień przeglądarki na "zawsze pytaj o lokalizację pobierania" zadziałała.

+0

Próbowałem różnych rzeczy. Uratowałeś mnie. –

2

Jedynym sposobem, aby to zrobić, to ustawić nagłówek pliku na serwerze, tak jak poniżej:

<FilesMatch "\.(?i:pdf)$"> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</FilesMatch> 

atrybut pobieranie nie pozwalają na zmianę nazwy pliku lub filetype nic więcej jak to jest oczywiste zagrożenie bezpieczeństwa.

To, co próbujesz zrobić, powielaj kliknięcie prawym przyciskiem myszy - zapisz jako dialog, ale obawiam się, że w tej chwili nie jest to możliwe.

Powiązane problemy