Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem A href=" zobrazit nebo stáhnout PDF

Ahoj, potřeboval bych poradit.

Mám kód:
<p class="item-demo-url">
<a class="btn btn-default" href="<?php echo $attribs->get('portfolio-demo') ?>">Zobrazit</a>
<a class="btn btn-default" href="<?php echo $attribs->get('portfolio-demo') ?>">Download</a>
</p>

Jsou to prakticky dvě tlačítka, ideálně bych chtěl dosáhnout toho aby jedno tlačítko přímo zobrazilo PDF v prohlížeči a druhé spustilo download...

Jde to?

Díky!

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Musis to poresit v PHP, kdyz chces zobrazit soubor vracej hlavicku Content-type: application/pdf pri…
MaSo 13.09.2016 16:32
MaSo
Promiň, můžeš to trochu rozepsat? Jak vracet hlavičku? Já ten kod nepíšu, pouze jsem zreplikoval čás…
Redsnake 13.09.2016 16:44
Redsnake
Tak jednoduche to nebude. Asi bych si udelal nejaky PHP script, kde kteremu by se predaval nazev so…
MaSo 13.09.2016 17:01
MaSo
já si taky myslím, že normální stažení stačí... Ale:) Nicméně, nahodil jsem ten script, ale problém…
Redsnake 13.09.2016 17:23
Redsnake
funguje to
čitateľ 13.09.2016 17:38
čitateľ
No, já tam mám ještě blbě cesty a budou tomu vadit podadresáře, kdy mám roztříděné roky. Ale tobě to… nový
Redsnake 13.09.2016 17:49
Redsnake
To ještě zrekapituluju: Na ftp jsem vytvořil soubor download.php ve složce s purity šablonou v umís… nový
Redsnake 13.09.2016 18:30
Redsnake
Zkusil jsem to pro debug účely zjednodušit. použil jsem přímý odkaz http://teramagazin.cz/soubory/… nový
Redsnake 13.09.2016 21:51
Redsnake
Tak jsem byl upozorněn na bezpečnostní riziko a soubor download.php již na serveru není. Kašlu na to… poslední
Redsnake 13.09.2016 22:26
Redsnake

Musis to poresit v PHP, kdyz chces zobrazit soubor vracej hlavicku Content-type: application/pdf pri stahovani zase Content-type: application/octet-stream. Ale ani tak to nemusi fungovat kazdemu, pac to zalezi na nastaveni browseru uzivatele...

Promiň, můžeš to trochu rozepsat? Jak vracet hlavičku? Já ten kod nepíšu, pouze jsem zreplikoval část kodu který je zodpovědný za zobrazení tlačítka, tím jsem jej zduplikoval s vidinou toho, že jen přidám nějaký příznak do jednoho tlačítka a bude to fungovat.

Tak jednoduche to nebude.

Asi bych si udelal nejaky PHP script, kde kteremu by se predaval nazev souboru pro stazeni/zobrazeni. Rekneme download.php.

<a href="/download.php?filename=test.pdf&view=true">Click</a>

Script by pak vratil soubor a hlavicku odpovedi by nastavil podle priznaku view (v PHP metoda header()).

Podobne jako tady:
http://stackoverflow.com/questions/9530249/view-a- pdf-file-in-html-not-to-download-it

PS: ale neresil bych to, pac je to zbytecne. Normalni stazeni staci...

já si taky myslím, že normální stažení stačí... Ale:)

Nicméně, nahodil jsem ten script, ale problém je, že php mi negeneruje odkaz jako takovej, ale vypadávaj z toho věci jako http://teramagazin.cz/index.php/component/phocadow nload/category/1-casopis-teramagazin?download=3:1- 2013 což není název souboru ani cesta k němu. No, už jdu asi moc do hloubky, protože vůbec netuším co se tam děje :D

No, já tam mám ještě blbě cesty a budou tomu vadit podadresáře, kdy mám roztříděné roky. Ale tobě to u nějakého čísla funguje jak má? Mě to hází 404...přímo v /soubory/archiv/ je jen číslo 1_2013, to jediné by imho mohlo fungovat a nefunguje..

To ještě zrekapituluju:

Na ftp jsem vytvořil soubor download.php ve složce s purity šablonou v umístění /templates/purity_iii/html/com_content/category/

V souboru download.php je kód

<?php

$path = $_SERVER['DOCUMENT_ROOT']."/soubory/archiv/"; // change the path to fit your websites document structure
$fullPath = $path.$_GET['download_file'];

if ($fd = fopen ($fullPath, "r")) {
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts["extension"]);
switch ($ext) {
    case "pdf":
    header("Content-type: application/pdf"); // add here more headers for diff. extensions
    header("Content-Disposition: inline; filename=\"".$path_parts["basename"]."\"");     
    break;
    default;
    header("Content-type: application/octet-stream");
    header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
}
header("Content-length: $fsize");
header("Cache-control: private"); //use this to open files directly
while(!feof($fd)) {
    $buffer = fread($fd, 2048);
    echo $buffer;
}
}
fclose ($fd);
exit;
?>

Tlačítka jsou prezentována kodem v portfolio_item.php

<p class="item-demo-url">
			// referencni
			<a class="btn btn-default" href="<?php echo $attribs->get('portfolio-demo') ?>">Zobrazit</a>
			// pridany pro otevirani v prohlizeci
			<a class="btn btn-default" href="download.php?download_file=<?php echo $attribs->get('portfolio-demo') ?>">Zobrazit</a>
                        // stazeni
			<a class="btn btn-default" href="<?php echo $attribs->get('portfolio-demo') ?>">Download</a>
		</p>

viz teramagazin.cz/index.php/archiv

Ve složce /soubory/archiv/ je momentálně pokusně nahraný pouze první ročník..Tzn. čísla která vyšla v rorce 2013, ty by teoreticky měla fungovat. Nicméně to háže 404 chybu. Pokud použiju odkaz, tak se číslo stáhne, ale jak je součástí kodu tlačítka

<a class="btn btn-default" href="download.php?download_file=<?php echo $attribs->get('portfolio-demo') ?>">Zobrazit</a>

tak to soubor nenajde.

Třeba tam někdo uvidíte něco evidentního...

Zkusil jsem to pro debug účely zjednodušit.

použil jsem přímý odkaz

http://teramagazin.cz/soubory/archiv/TERAmagazin_1_2013.pdf

tak, že jsem vytvořil další tlačítko (šesté :D) kódem

<a href="download.php?download_file=http://teramagazin.cz/soubory/archiv/TERAmagazin_1_2013.pdf"><img src="images/view.png" alt=" " border="0"/></a>

.
Stále hlásí 404 přestože odkaz samotný funguje jak má, pokud jej použiju bez těch obezliček.

Zpět do poradny Odpovědět na původní otázku Nahoru