Autor | Zpráva | ||
---|---|---|---|
Milan1236000 Profil |
#1 · Zasláno: 6. 7. 2015, 23:40:36
Zdravím,
jak mám dostat PDF soubor z databáze? Zkoušel jsem <?php $pripojeni = new mysqli("localhost", "user", "pwd", "db"); if ($pripojeni->connect_errno > 0) die("Chyba při připojení."); $pripojeni->query("SET NAMES utf8"); $vysledek = $pripojeni->query("SELECT * FROM `tabulka` WHERE Id=\"1\""); while($zaznam = $vysledek->fetch_object()) printf("%s", $zaznam->Pdf); $pripojeni->close(); ?> ���2�}���x�B�(vDĦQ�٣�Eئ҃(��Ӳ2�=Uɦ���h�)O���Mo���
Kdyby to bylo moc složité, napadlo mě to načíst klasicky z adresáře, jen jsem to chtěl mít v databázi při jednom. Jak na to? Mimochodem, všiml jsem si, že v databázi se ten PDF soubor ukazuje jako Binární - neupravujte (82,9 KiB) a po stažení je to soubor s koncovkou .bin, jak to?
|
||
Alphard Profil |
#2 · Zasláno: 6. 7. 2015, 23:51:51
Binárka je v pořádku, jen tam chybí správné hlavičky. Cyklus při výpisu je zbytečný a použil bych jen
echo .
|
||
Milan1236000 Profil |
Díky za radu. Už se vše zobrazuje, jak má, ale vždy se stáhne pouze prázdný pdf soubor (velký asi 6 kB, oproti originálnímu nahranému - asi 80 kB). Po odkomentování příkazů a zároveň zakomentováním dalších příkazů až do konce tagu
?> se při načtení stránky stáhne jakýsi soubor s popisem "pdf" a velikostí 0 B. Proč se při najetí na odkaz zobrazuje adresa aktuální zobrazené stránky? Ještě dotaz ohledně těch hlaviček. Musejí tam být všechny? Přece jen jich není málo.
<a href=" <?php> $pripojeni = new mysqli("localhost", "user", "pwd", "db"); if ($pripojeni->connect_errno > 0) die("Chyba při připojení."); $pripojeni->query("SET NAMES utf8"); $vysledek = $pripojeni->query("SELECT * FROM `maturitni_prace` WHERE Id=\"1\""); /*$file = $vysledek->Pdf .".pdf"; header("Content-Disposition: attachment; filename=" . urlencode($file)); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Description: File Transfer"); header("Content-Length: " . filesize($file)); flush(); // this doesn't really matter. $fp = fopen($file, "r"); while (!feof($fp)) { echo fread($fp, 65536); flush(); // this is essential for large downloads } fclose($fp); */ $file = $vysledek->Pdf; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header("Content-Type: application/force-download"); header('Content-Disposition: attachment; filename=' . urlencode(basename($file))); // header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); exit; } ?>" target="_blank" type="application/octet-stream" download="yourpdf.pdf"> <img src="soubory/pdf.gif" height="150" width="150"></a> |
||
Alphard Profil |
Takhle ne. V tom html bude jenom odkaz na soubor, který vypisuje pdf. Samotný výpis bude na vlastní stránce, kde se kromě binárky pdf souboru nevypíše vůbec nic. Ostatně, je to naznačeno i v tom příspěvku na stackoverflow, který jsem posílal.
Kdyby bylo třeba zobrazit pdf uvnitř html stránky, musí se to dělat jinak. |
||
Milan1236000 Profil |
#5 · Zasláno: 7. 7. 2015, 19:08:06
Aha, no, vidím, že tohle je asi nad moje síly. Dám tam klasický odkaz na soubor v adresáři a bude to vyřešené...
Možná někdy v budoucnu, až na to budu mít větší nervy, to vyzkouším znovu. :) Každopádně díky za rady. |
||
Časová prodleva: 9 let
|
0