pobieranie pliku *.pdf a nie otwieranie w przegladarce

pobieranie pliku *.pdf a nie otwieranie w przegladarce
KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

Witam.
Już jakiś czas siedzę nad pobieraniem pliku a nie go otwieraniem w przeglądarce chodzi mi o *.pdf czy *.mp3. te pliki się same otwierają w przeglądarce a ja chce by się pobierały.próbowałem funkcji:

Kopiuj
 
$rec1['polozenie_pliku'] <- pod katalog np: pliki
$rec1['nazwa_pliku'] <- cała nawa pliku np: 4programmers.pdf
 header ( 'Content-Disposition: attachment;  filename="urzytkownicy/'.$rec1['polozenie_pliku'].'/'.$rec1['nazwa_pliku'].'"' );
  • Rejestracja: dni
  • Ostatnio: dni
0

http://www.php.net/manual/en/function.header.php#99190

I napisz sto razy na tablicy "użytkownicy" ;-)

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

chętnie napisze aby to działało

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
1
Kopiuj
header('Content-Type: application/octet-stream');
KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

nadal tego nie rozumiem

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Nie umiesz dokleić jednej linijki więcej do Twojego skryptu? Wróżę Ci wielką karierę programisty ;)

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

umiem i dokleiłem ale to dało skutkiem inny niż zamierzony to ma wyglądać tak??

Kopiuj
 
header('Content-Type: application/octet- stream');
header ( 'Content-Disposition: attachment;  filename="uzytkownicy/'.$rec1['polozenie_pliku']."/".$rec1['nazwa_pliku'].'"' );
dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Ja tam zrobiłem literówkę, po czym natychmiast (jak mi się wydawało, trochę mi się połączenie przycięło) ją poprawiłem. Spacja w octet-stream - chociaż sądzę, że i bez tego przeglądarka powinna pobrać plik, hmm.
upewnij się, że Ci nic "Content-Type" nie nadpisuje później w kodzie.

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

Wiem co jest on nie pobiera pliku tylko on tworzy nowy plik o nazwie "uzytkownik_alex_xara.pdf" a to ma być tak pobierz plik z katalogu a nie utwórz plik.

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

Dobra dałem sobie radę i może komuś się to przyda:

Kopiuj
 
<?php
$katalog = "moja_muzyka/";
$plik = "spiew.mp3";
$lokalizacja = $katalog.$plik;
$rozmiar = filesize($lokalizacja);
//$typ =  "pdf"; <- to należy zrobić casem


//header("Content-type: application/$typ"); <- to należy odsleszować po napisaniu case
header("Accept-Ranges: bytes");
header("Content-Length: $rozmiar");
header("Content-Disposition: attachment; filename=$plik");
header("Content-Description: $plik");
readfile($lokalizacja);
?>

BARDZO WAŻNA UWAGA:
na stronie gdzie jest to umieszczone nie może być żadnego drukowania. ta strona ma być pusta

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Nie może być żadnego drukowania :D

Twoje Accept-Ranges kłamie przeglądarki, bo wznawiania to Twój skrypt nie obsługuje. Żeby to było profesjonalne albo to usuń, albo zmień "bytes", na "none".
W tym momencie nie podajesz żadnego mime-type -- niektóre przeglądarki MOGĄ podejmować próby otworzenia tego po swojemu. Tak naprawdę NAJWAŻNIEJSZĄ linijkę pominąłeś:

Kopiuj
<?php
header('Content-Type: application/octet-stream');
?>

Na dowód weź sobie powyższy kod i wklej w plik PHP. Nic więcej niech w nim nie będzie (ew. po zamknięciu php dopisz "dupa"). Skieruj przegladarkę na ten plik - wywoła pobieranie. Twoje linijki odpowiadają za nazwę pliku czy informowanie przeglądarki o rozmiarze, natomiast tak czy tak może Twój kod spowodować otworzenie pliku przy pomocy pluginów. Także linijkę powyżej także dopisz.

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

masz racje. i jeszcze jedną dziurę znalazłem jak plik jets typu np .apk lub ipa to jest problem bo nie daje rozszerzenia na końcu tylko jest sama nazwa

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

Hej.
Chciało by ci się jeszcze trochę mi pomóc

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Zadaj pytanie właściwe, nie traćmy czasu..

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

Hej.
Może łapiesz troszkę jeszcze CSS.
dałem inputowi klase

Kopiuj
 
<input type="text" class="wysz" name="wyszukiwarka">
i w css
input.wysz{
width:500px;
}

i nic.

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Jest dobrze. Żeby stwierdzić dlaczego nie działa potrzeba więcej kodu (zapewne inna reguła nadpisuje Ci tę). Firebug/DragonFly/podobne narzędzie rozwiąże zapewne Twój problem.

I dlaczego w tym temacie?

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

właśnie oto chodzi ze Firebug nie znalazł w tym problemu, a postarałem się tak to napisać by się nie powtarzały

dzek69
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Rzeszów
0

Jak nie będzie więcej kodu to ja Ci więcej nie mogę pomóc, zrób sobie pusty plik z takim inputem i takim stylem i zobaczysz, że działa. Czyli coś Ci nadpisuje ten styl. Czyli daj więcej kodu

KI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 83
0

miałeś racje coś popsułem ja. Dzięki:).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.