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!

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
ešte som našiel toto: $content = shell_exec('/usr/local/bin/pdftotext '.$filename.' -'); //dash at…
Mlocik97 13.09.2016 15:47
Mlocik97
To je blbost imho, nechci nic zobrazovat ve frame. To první je část nějakého kodu, kdy zbytek kodu j…
Redsnake 13.09.2016 16:00
Redsnake
pak nevím, ja taky čo sa týka html iba začínam,... ešte som našiel: <object data="data/test.pdf" t…
Mlocik97 13.09.2016 16:09
Mlocik97
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.
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
Teď to tam je nahozený i s popiskama, kdyby se vám na to ještě někomu chtělo mrknout.... budu rád.
Redsnake 13.09.2016 17:34
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…
Redsnake 13.09.2016 17:49
Redsnake
presne tak, hlavicka sa nastavuje cez header() ked tak, odporucam to velmi jednoducho odsledovat cez…
čitateľ 13.09.2016 16:53
čitateľ
To ještě zrekapituluju: Na ftp jsem vytvořil soubor download.php ve složce s purity šablonou v umís…
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/…
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

ešte som našiel toto:

$content = shell_exec('/usr/local/bin/pdftotext '.$filename.' -'); //dash at the end to output c

alebo

<iframe src="http://docs.google.com/gview?url=http://path.com/to/your/pdf.pdf&embedded=true" 
style="width:600px; height:500px;" frameborder="0"></iframe>

pak nevím, ja taky čo sa týka html iba začínam,...

ešte som našiel:

<object data="data/test.pdf" type="application/pdf" width="300" height="200">
<a href="data/test.pdf">test.pdf</a>
</object>
<embed src="file_name.pdf" width="800px" height="2100px" />

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

presne tak, hlavicka sa nastavuje cez header()
ked tak, odporucam to velmi jednoducho odsledovat cez vyvojarsky rezim v prehliadaci, pri stiahnuti alebo zaobrazeni hocakeho pdf

ako bolo povedane, na vysledne spravanie ma vplyv hlavicka a ako sa k nej prehliadac postavi, nie kazdy rovnako

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