Dowloaden werkt niet, krijg alleen bestanden van 1kb groot

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris Smit

Chris Smit

14/03/2011 10:05:47
Quote Anchor link
Hallo, ik ben nieuw met de PHP taal, en weet er nog niet veel vanaf.
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)
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
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>
    '
;
}

?>
 
PHP hulp

PHP hulp

15/01/2025 00:59:14
 
- Ariën  -
Beheerder

- Ariën -

14/03/2011 10:11:25
Quote Anchor link
Waar komt $size vandaan?
 
Chris Smit

Chris Smit

14/03/2011 10:15:58
Quote Anchor link
geen idee, heb het net even gekeken, maar hij staat er verder niet tussen dan alleen bij de header, moet ik er $grote van maken of filesize?

Sorry, maar zoals je wss ziet, is mijn kennis heel erg beperkt :(
 
- SanThe -

- SanThe -

14/03/2011 10:18:15
Quote Anchor link
Je zal de size ook in de url moeten meegeven als je die wilt gebruiken.
 
- Ariën  -
Beheerder

- Ariën -

14/03/2011 10:19:13
Quote Anchor link
Nee, in je script wordt de variabele $size gebruikt, maar die moet ergens zijn waarde vandaan halen, maar lijkt leeg te zijn.

Waar heb je dit script vandaan?
 
Chris Smit

Chris Smit

14/03/2011 10:20:35
Quote Anchor link
Ik hem hem deels van een klasgenoot, die heeft hem zelfgemaakt.
 
- Ariën  -
Beheerder

- Ariën -

14/03/2011 10:27:26
Quote Anchor link
Kan je niet aan die klasgenoot vragen hoe en wat?

Je kan volgens -SanThe- de filesize ook gebruiken in de URL (GET), maar dan moet die waarde wel exacte gelijk zijn in bytes.
 
Chris Smit

Chris Smit

14/03/2011 10:36:32
Quote Anchor link
Ik kan toch ook $grote invullen, want dit heb ik in de code staan:
$grote = filesize('bestanden/'.$file);
 
- Ariën  -
Beheerder

- Ariën -

14/03/2011 10:38:49
Quote Anchor link
I.p.v. $file moet je dan: $_GET['download'] gebruiken.
 
Chris Smit

Chris Smit

14/03/2011 10:44:38
Quote Anchor link
als ik dat invoeg krijg ik deze fout:
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)
PHP script in nieuw venster Selecteer het PHP script
1
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']);


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
 
- Ariën  -
Beheerder

- Ariën -

14/03/2011 10:57:53
Quote Anchor link
Even logisch kijken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
header("Content-Length: $_GET['download']");

In $_GET['download'] staat de filename vermeld, en ze hebben de bestandgrootte nodig.
 

14/03/2011 11:17:11
Quote Anchor link
Ik zou ook oppassen met user data in headers...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.