Dowloaden werkt niet, krijg alleen bestanden van 1kb groot
Ik probeer een site te maken waar je vanuit een directory bestanden kunt laten downloaden, ongeacht type bestand.
Ik heb samen met iemand anders al een site gebouwd, maar als ik een mp3 file van ongeveer 70MB wil downloaden, dan krijg ik een gedownload file van 1kb :S
Wie weet hoe dit kan, of wie weet wat de fout / oplossing is, ik kom er namelijk niet helemaal uit :(
de index.php code is:
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
if(isset($_GET['download'])){
if(!empty($_GET['download'])){
header("Content-Length: $size");
header('Content-type: Application/octet-stream');
header('Content-Disposition: attachment; filename='.$_GET['download']);
}
}
else{
echo '
<html>
<head>
<LINK rel=STYLESHEET href="opmaak.css" type="text/css">
</head>
<body>
<h1>Bestanden uitlezen</h1>
<hr>
<br>
<center>
<table>
<tr>
<td>
<p class="naam">naam:</p>
</td>
<td>
<p class="grotekb">grote (kB):</p>
</td>
<td>
<p class="grotemb">grote (MB):</p>
</td>
<td>
<p class="grotegb">grote (GB):</p>
</td>
</tr>
';
$dir = opendir('bestanden');
$rij='';
while($file = readdir($dir)){
if($file !== '.' && $file !== '..'){
if(($rij % 2) == 1){
$kleur = '#ADD8A1';
}
else{
$kleur= '#AFEEEE';
}
echo '
<tr bgcolor="'.$kleur.'">
<td>
<a href="?download='.$file.'">'.$file.'</a>
</td>
';
$grote = filesize('bestanden/'.$file);
$kb = $grote * .0009765625;
$mb = $grote * .0009765625 * .0009765625;
$gb = $grote * .0009765625 * .0009765625 * .0009765625;
echo '
<td>
<p class="uitkomstkb">'.round($kb, 2).' kB</p>
</td>
<td>
<p class="uitkomstmb">'.round($mb, 2).' MB</p>
</td>
<td>
<p class="uitkomstgb">'.round($gb, 2).' GB</p>
</td>
</tr>
';
}
$rij ++;
}
echo '
</center>
</table>
</body>
</html>
';
}
?>
if(isset($_GET['download'])){
if(!empty($_GET['download'])){
header("Content-Length: $size");
header('Content-type: Application/octet-stream');
header('Content-Disposition: attachment; filename='.$_GET['download']);
}
}
else{
echo '
<html>
<head>
<LINK rel=STYLESHEET href="opmaak.css" type="text/css">
</head>
<body>
<h1>Bestanden uitlezen</h1>
<hr>
<br>
<center>
<table>
<tr>
<td>
<p class="naam">naam:</p>
</td>
<td>
<p class="grotekb">grote (kB):</p>
</td>
<td>
<p class="grotemb">grote (MB):</p>
</td>
<td>
<p class="grotegb">grote (GB):</p>
</td>
</tr>
';
$dir = opendir('bestanden');
$rij='';
while($file = readdir($dir)){
if($file !== '.' && $file !== '..'){
if(($rij % 2) == 1){
$kleur = '#ADD8A1';
}
else{
$kleur= '#AFEEEE';
}
echo '
<tr bgcolor="'.$kleur.'">
<td>
<a href="?download='.$file.'">'.$file.'</a>
</td>
';
$grote = filesize('bestanden/'.$file);
$kb = $grote * .0009765625;
$mb = $grote * .0009765625 * .0009765625;
$gb = $grote * .0009765625 * .0009765625 * .0009765625;
echo '
<td>
<p class="uitkomstkb">'.round($kb, 2).' kB</p>
</td>
<td>
<p class="uitkomstmb">'.round($mb, 2).' MB</p>
</td>
<td>
<p class="uitkomstgb">'.round($gb, 2).' GB</p>
</td>
</tr>
';
}
$rij ++;
}
echo '
</center>
</table>
</body>
</html>
';
}
?>
Waar komt $size vandaan?
Sorry, maar zoals je wss ziet, is mijn kennis heel erg beperkt :(
Je zal de size ook in de url moeten meegeven als je die wilt gebruiken.
Waar heb je dit script vandaan?
Ik hem hem deels van een klasgenoot, die heeft hem zelfgemaakt.
Je kan volgens -SanThe- de filesize ook gebruiken in de URL (GET), maar dan moet die waarde wel exacte gelijk zijn in bytes.
$grote = filesize('bestanden/'.$file);
I.p.v. $file moet je dan: $_GET['download'] gebruiken.
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in D:\xampp\htdocs\uitlezen.php on line 4
dit is de code:
Code (php)
1
2
3
4
5
2
3
4
5
if(isset($_GET['download'])){
if(!empty($_GET['download'])){
header("Content-Length: $_GET['download']");
header('Content-type: Application/octet-stream');
header('Content-Disposition: attachment; filename='.$_GET['download']);
if(!empty($_GET['download'])){
header("Content-Length: $_GET['download']");
header('Content-type: Application/octet-stream');
header('Content-Disposition: attachment; filename='.$_GET['download']);
Toevoeging op 14/03/2011 10:49:48:
na de code veranderd te hebben naar:
header("Content-Length:". $_GET['download']);
is de fout weg, maar zijn de bestanden nog steeds 0kb groot :s
In $_GET['download'] staat de filename vermeld, en ze hebben de bestandgrootte nodig.
Ik zou ook oppassen met user data in headers...