Podaję link do pliku pdf na mojej stronie do pobrania, jak poniżej
<a href="myfile.pdf">Download Brochure</a>
Problem występuje wtedy, gdy użytkownik kliknie ten link
- Jeśli użytkownik zainstalował program Adobe Acrobat, otwiera plik w tym samym oknie przeglądarki w programie Adobe Reader.
- Jeśli program Adobe Acrobat nie jest zainstalowany, pojawi się wyskakujące okienko dla użytkownika w celu pobrania pliku.
Ale chcę, aby użytkownik zawsze wyświetlał wyskakujące okienko do pobrania, niezależnie od tego, czy program „Adobe Acrobat” jest zainstalowany, czy nie.
Powiedz mi, jak mam to zrobić?
"Content-type: application/force-download"
nie jest nigdzie tutaj wymienione: iana.org/ assignments / media-types / application To całkowicie fałszywy nagłówek. Nie twórz nagłówków i nie wysyłaj ich. Czy mógłbyś zaktualizować swoją odpowiedź. Dzięki.fopen
.To częsty problem, ale niewiele osób wie, że istnieje proste rozwiązanie HTML 5:
Gdzie
newfilename
jest sugerowana nazwa pliku dla użytkownika do zapisania pliku. Lub domyślnie zostanie wybrana nazwa pliku na serwerze, jeśli pozostawisz ją pustą, na przykład:Kompatybilność: przetestowałem to na Firefox 21 i Iron, oba działały dobrze. Może nie działać w przeglądarkach niezgodnych z HTML5 lub nieaktualnych. Jedyną przeglądarką, którą przetestowałem, która nie wymuszała pobierania, jest IE ...
Sprawdź zgodność tutaj: http://caniuse.com/#feat=download
źródło
Nie przechodź przez każdą linię pliku. Zamiast tego użyj readfile , jest szybszy. To jest poza witryną php: http://php.net/manual/en/function.readfile.php
Upewnij się, że wyczyściłeś swoją zmienną get, ponieważ ktoś mógłby pobrać niektóre pliki php ...
źródło
Zamiast używać skryptu PHP do odczytu i opróżnienia pliku, lepiej jest przepisać nagłówek za pomocą
.htaccess
. Pozwoli to zachować „ładny” adres URL (myfile.pdf
zamiastdownload.php?myfile
).źródło
^\.pdf$
wyrażenie regularne.Znalazłem sposób, aby to zrobić za pomocą zwykłego starego HTML i JavaScript / jQuery, które z wdziękiem degradują się. Testowane w IE7-10, Safari, Chrome i FF:
Link HTML do pobrania:
jQuery (czysty kod JavaScript byłby bardziej rozwlekły), który symuluje kliknięcie linku po niewielkim opóźnieniu:
Aby uczynić to bardziej niezawodnym, możesz dodać wykrywanie funkcji HTML5, a jeśli go tam nie ma, użyj,
window.open()
aby otworzyć nowe okno z plikiem.źródło
To jest klucz:
Aplikacja typu content / x-pdf-document lub application / pdf jest wysyłana podczas wysyłania pliku PDF. Adobe Reader zwykle ustawia program obsługi dla tego typu MIME, więc przeglądarka przekaże dokument do programu Adobe Reader po odebraniu dowolnego typu PDF MIME.
źródło
Wiem, że jestem bardzo spóźniony, aby odpowiedzieć na to pytanie, ale znalazłem sposób, aby to zrobić w javascript.
źródło
Spróbuj tego:
<a href="pdf_server_with_path.php?file=pdffilename&path=http://myurl.com/mypath/">Download my eBook</a>
Kod wewnątrz pdf_server_with_path.php to:
źródło
Oto inne podejście. Wolę raczej niż polegać na obsłudze przeglądarki lub zajmować się tym w warstwie aplikacji, używać logiki serwera WWW.
Jeśli używasz Apache i możesz umieścić plik .htaccess w odpowiednim katalogu, możesz użyć poniższego kodu. Oczywiście możesz również umieścić to w httpd.conf, jeśli masz do tego dostęp.
Dyrektywa FilesMatch jest po prostu wyrażeniem regularnym, więc można ją ustawić tak szczegółowo, jak chcesz, lub dodać inne rozszerzenia.
Linia nagłówka robi to samo, co pierwsza linia w powyższych skryptach PHP. Jeśli potrzebujesz ustawić również linie Content-Type, możesz to zrobić w ten sam sposób, ale nie uznałem tego za konieczne.
źródło
Rozwiązałem mój, używając całego adresu URL pliku PDF (zamiast umieszczać nazwę pliku lub lokalizację w href): a href = "domena. Com / pdf / nazwa pliku.pdf"
źródło
jeśli chcesz ograniczyć prędkość pobierania, użyj tego kodu !!
Aby uzyskać więcej informacji, kliknij tutaj
źródło
źródło
W aplikacji Ruby on Rails (zwłaszcza w przypadku czegoś takiego jak klejnot Prawn i wtyczka Prawnto Rails) możesz to zrobić w nieco prostszy sposób niż pełny skrypt (jak w poprzednim przykładzie PHP).
W kontrolerze:
Część render: layout => false mówi przeglądarce, aby otworzyła okno „Czy chcesz pobrać ten plik?” zamiast próbować renderować plik PDF. Wtedy możesz normalnie połączyć się z plikiem: http://mysite.com/myawesomepdf.pdf
źródło