Versio

[OPGELOST] Zip file buiten de root downloaden

Overzicht Reageren

Aaron -

Aaron -

30/01/2012 01:11:20
Quote Anchor link
Update
Het probleem is opgelost. De functie een andere naam gegeven en nu werkt het wel perfect. (Gebruik nooit geen namen van functies die al bestaan zoals header :p)

Originele post
Beste PHP leden

Omdat de zip bestanden (site backup in zip) buiten de root staan, maar toch mogen gedownload worden door de gebruiker heb ik deze functie aan een class toegevoegd.

Alles werkt prima, maar als ik het bestand open zie ik dat geen enkel document erin zit. (Dit is wel zo als ik het gewoon uit de root download)

Hier is de functie, als er vragen zijn, mag je ze altijd stellen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
        function zipHeader($zip_name) {
        
            # Check if the file exists:
            if(file_exists($zip_name)) {
        
                # The file name:
                $this->filename = explode('/', $zip_name);
                
                if(isset($filename[2]))
                    $this->filename = $this->filename[2];
                else
                    $this->filename = 'backup-'.date('Y-m-d').'.zip';
            
                # Change the headers:
                header("Pragma: public");
                header("Expires: 0");
                header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                header("Cache-Control: public");
                header("Content-Description: File Transfer");
                header("Content-type: application/zip");
                header("Content-Disposition: attachment; filename=\"".$this->filename."\"");
                header("Content-Transfer-Encoding: binary");
                header("Content-Length: ".filesize($zip_name));
                
                # Clear the buffer:
                flush();
                ob_end_flush();
                
                # Read the file:
                readfile($zip_name);
                
            }
            
        }

?>


Alvast bedankt
Aaron
Gewijzigd op 30/01/2012 09:37:04 door Aaron -
 
PHP hulp

PHP hulp

25/05/2012 13:17:56
Gesponsorde koppelingen:
 
Chris
Beheerder

Chris

30/01/2012 05:17:51
Quote Anchor link
Het klopt trouwens niet dat je een functie genaamd "header" gaat vervangen met je eigen header. Hernoem je functie eens, en kijk wat voor resultaten je dan krijgt?
 
Jaron T

Jaron T

30/01/2012 05:38:36
Quote Anchor link
wat staat er in $zip_name? het correcte pad naar het bestand buiten de root?
 
Aaron -

Aaron -

30/01/2012 09:39:20
Quote Anchor link
@Chris
Ja, de functie noemde header. Ik was vergeten dat er ook nog header('Location: url'); bestaat (ik gebruik m'n eigen functie omdat er een heel stuk achter komt zoals flush en exit omdat het anders niet werkt).

@Jaron T
Het pad klopte al.

Bedankt voor de hulp!
Gewijzigd op 30/01/2012 09:39:34 door Aaron -
 



Overzicht Reageren

Get Adobe Flash player