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
V prípade downloadu skuste napsať: <a class="btn btn-default" href="<?php echo $attribs->get('portf…
Mlocik97 13.09.2016 15:32
Mlocik97
Download mi funguje, viz archiv ale s tím otevřením v prohlížeči (byť je mi jasné, že to nebude 100…
Redsnake 13.09.2016 15:36
Redsnake
Download mi funguje... S těmi odkazy to je sporné. Záleží taky na nastavení webového prohlížeče (zo…
IQ37 13.09.2016 16:11
IQ37
Právěže mají stejný kod, tak se stejně chovají..A já potřebuju dosáhnout toho, aby se chovaly jinak:…
Redsnake 13.09.2016 16:49
Redsnake
K tomu by mohla být právě nápověda na tom odkazu. Prostě vynutit PDF zobrazení ve stránce. nový
IQ37 13.09.2016 17:45
IQ37
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

V prípade downloadu skuste napsať:

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

(podporuje len v HTML 5)

v prípade zobrazenia iba pomocou target="_top" alebo target do iframu

tag_a.asp

Download mi funguje...

S těmi odkazy to je sporné. Záleží taky na nastavení webového prohlížeče (zobrazovače PDF) uživatele. To neovlivníš. Pokud se má soubor stáhnout nebo zobrazit, tak musí mít nastaveny rozdílné hlavičky. Podrobnosti nevím. Mi ty oba tvoje odkazy nabízejí stažení souboru.

Zkus se inspirovat tady: view.samurajdata.se

K tomu by mohla být právě nápověda na tom odkazu. Prostě vynutit PDF zobrazení ve stránce.

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