[PHP] Downloaden PDF werkt alleen met nieuwe versie Acrobat

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hej,

Wat ik wil bereiken is dat gebruikers bestanden kunnen downloaden vanaf een site, maar deze site is geheel in flash. Dus heb ik vanuit flash een link gemaakt naar een php pagina genaamd redirect.php en wordt de benodigde informatie (in dit geval gebruikersnaam, wachtwoord en file-id) doorgestuurd via de POST-method.

Mijn php script ziet er als volgt uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    $fullPath    = getcwd()."/bestanden/".$aRow["file"];
    $fd = fopen ($fullPath, "rb");
    $fsize = filesize($fullPath);
    $fname = basename ($fullPath);
    
    header("Pragma: ");
    header("Cache-Control: ");
    header("Content-type: application/pdf");
    header("Content-Disposition: inline; filename=\"".$fname."\"");
    header("Content-length: $fsize");

    fpassthru($fd);
?>


Als ik in flash op het bestand klik, opent hij een nieuw venster en krijg ik het pdf bestand te zien in dat venster. Maar dit werkt niet met een oudere versie van Acrobat Reader!? Ik heb zelf 7.0, maar met 6 werkt dit niet. Hoe kan dit?

Bij voorbaat dank

[ Voor 37% gewijzigd door Verwijderd op 20-04-2005 10:47 ]


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wat gebeurt er met 6 dan? :)

Ik weet wel dat het ook een gebruikers instelling is (of je PDF in een browser wilt weergeven)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
O sorry, vergete te vertellen ;) 8)7

Met 6 krijg je een foutmelding dat ie het bestand niet kan openen

[ Voor 3% gewijzigd door Verwijderd op 20-04-2005 11:45 ]


Acties:
  • 0 Henk 'm!

  • hommer
  • Registratie: September 2000
  • Laatst online: 15-09 15:23
Ik heb zelf na vele problemen met dynamisch gegenereerde pdf-en downloaden naar verschillende browsers voor de volgende oplossing gekozen:
De pdf stream ik naar een bestand in een temp directory en de brouwser krijgt een simpele pagina om hem te downloaden (gebruik fpdf overiges):
PHP:
1
2
3
4
5
6
7
8
9
10
...
$filename = getcwd()."/tmp/".$filename;
$pdf->Output($filename);
$filename = dirname($_SERVER['PHP_SELF'])."/tmp/".basename($filename);
?>
<html>
<script>document.location='<?= $filename ?>';</script>
</html>
<?php
...

En middels onderstaande functie wordt die direcory opgeruimd elke keer als er een nieuwe pdf wordt opgevraagd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function CleanFiles($dir)
{
    //Delete temporary files
    $t = time();
    $h = opendir($dir);
    while ($file = readdir($h)) {
        if (substr($file,-4) == '.pdf') {
            $path = $dir.'/'.$file;
            if ($t-filemtime($path) > 3600)
                @unlink($path);
        }
    }
    closedir($h);
}

t.k.a. sig space t.e.a.b.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Voor een soortgelijk scriptje gebruik ik alleen deze twee headers:
PHP:
1
2
    header ('content-type: "' .$result['mime'] .'"');
    header('Content-Disposition: attachment; filename="' .$filename .'"');

Daarbij is het juist wél de bedoeling dat het bestand wordt gedownload. Maar probeer het eens zonder cache-control headers.
De methode van Hommer lijkt me niet echt wenselijk, het idee is immers om te authoriseren voordat het bestand bekeken kan worden. Volgens mij kan iedereen bij de temporary bestanden, waardoor je die beveiliging dus gewoon omzeilt...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • koppie
  • Registratie: April 2001
  • Laatst online: 16:54
Ik heb een soortgelijk probleem opgelost door te zorgen dat het bestand door de client wordt aangeboden als download. Dan is de client ook gelijk in staat het pdf op te slaan en ook te mailen vanuit versie 6 en 7. Misschien is dat een oplossing, werkt ook beter met andere browsers.

Er wordt dan zoiets gebruikt (Java Applicatie Server-oplossing, maar het idee is hetzelfde):
code:
1
2
3
4
5
6
7
String downloadFile= "pdfreport"+i+ ".pdf";
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","attachment; filename=\"" + downloadFile + "\";");     
response.setContentLength(box.getReport().length);              
response.getOutputStream().write(box.getReport());              
response.getOutputStream().flush();
response.getOutputStream().close();


Edit: Ik zie net hierboven dat T-MOB hetzelfde idee had. Ik was blijkbaar al bezig met het opzoeken van de info... ;)

[ Voor 13% gewijzigd door koppie op 20-04-2005 13:32 ]

Ben ik nou zo dom, of is de rest zo slim?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het probleem met dat venstertje van opslaan / openen etc. is dat er in het pagina-venster komt te staan: "Bewerking afgebroken".

Dat vind ik niet echt netjes :(
Pagina: 1