[OPGELOST] Zip file buiten de root downloaden
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:
Alvast bedankt
Aaron
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)
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
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);
}
}
?>
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 -
Gesponsorde koppelingen:
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?
wat staat er in $zip_name? het correcte pad naar het bestand buiten de root?
@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!
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 -



