Problemen met download script.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
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
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
include("include/basis.php");
$id = $_GET["id"];
$module = $mysqli->query("SELECT * FROM admin_file_manager WHERE id = $id") or $mysqli->error;
if ($module->num_rows > "0")
{
$res = $module->fetch_array();
if ( ! function_exists ( 'mime_content_type ' ) )
{
function mime_content_type ( $f )
{
return trim ( exec ('file -bi ' . escapeshellarg ( $f ) ) ) ;
}
}
$file = "admin/data/".$res["bestand"];
if (file_exists($file)) {
$mysqli->query("UPDATE admin_file_manager SET hits=hits+1 WHERE id=$id") or $mysqli->error;
$ext = substr($file, -3);
$mtype = mime_content_type($file);
header('Content-Description: File Transfer');
header('Content-Type: '.$mtype.'');
header('Content-Disposition: attachment; filename='.basename($res["naam"].".".$ext).'');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: '.filesize($file).'');
ob_clean();
flush();
readfile($file);
exit;
}
else
{
echo 'bestand bestaat niet';
}
}
else
{
header("Location: ".$_SERVER["HTTP_REFERER"]);
die;
}
?>
include("include/basis.php");
$id = $_GET["id"];
$module = $mysqli->query("SELECT * FROM admin_file_manager WHERE id = $id") or $mysqli->error;
if ($module->num_rows > "0")
{
$res = $module->fetch_array();
if ( ! function_exists ( 'mime_content_type ' ) )
{
function mime_content_type ( $f )
{
return trim ( exec ('file -bi ' . escapeshellarg ( $f ) ) ) ;
}
}
$file = "admin/data/".$res["bestand"];
if (file_exists($file)) {
$mysqli->query("UPDATE admin_file_manager SET hits=hits+1 WHERE id=$id") or $mysqli->error;
$ext = substr($file, -3);
$mtype = mime_content_type($file);
header('Content-Description: File Transfer');
header('Content-Type: '.$mtype.'');
header('Content-Disposition: attachment; filename='.basename($res["naam"].".".$ext).'');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: '.filesize($file).'');
ob_clean();
flush();
readfile($file);
exit;
}
else
{
echo 'bestand bestaat niet';
}
}
else
{
header("Location: ".$_SERVER["HTTP_REFERER"]);
die;
}
?>
In firefox krijg ik dan de volgende melding: blabla, kon niet worden opgeslagen omdat het bronbestand niet gelezen kon worden.
Iemand weet wat ik fout doe?
Gewijzigd op 01/01/1970 01:00:00 door Bart van Asselt
ob_clean() & flush() zou niet nodig moeten zijn. Denk ook dat daar het probleem ligt, er worden headers verstuurd waarna je deze pushed naar de gebruiker voordat het bestand word gelezen.
Ik dacht aan rawurlencode() dan gaat het wel goed alleen zijn dan de spaties veranderd in %20
http://nl.php.net/htmlspecialchars al geprobeert ?
Spaties horen ook niet in een bestandsnaam.