[php] Downloaden van database werkt niet

Pagina: 1
Acties:

Onderwerpen


  • Justifier
  • Registratie: December 2004
  • Laatst online: 06-04-2024
Ik heb een script wat bestanden upload naar een mysql database. Dat werkt gewoon als ik dan met het download script een bestand wil dan open hij wel het scherm van opslaan als maar dan komt als naam te staan document.html en niet de naam van het bestand want ik wil downloaden. En als ik het download is het corrupted.
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
<? 
if(isset($_GET['id'])) 
{ 
    include 'library/config.php'; 
    include 'library/opendb.php'; 

    $id      = $_GET['id']; 
    $query   = "SELECT name, type, size, content FROM files WHERE id = '$id'"; 
    $result  = mysql_query($query) or die('Error, query failed'); 
    list($name, $type, $size, $content) = mysql_fetch_array($result); 

    header("Content-Disposition: attachment; filename=$name"); 
    header("Content-length: $size"); 
    header("Content-type: $type"); 
    echo $content; 

    include 'library/closedb.php';     
    exit; 
} 

?> 
<html> 
<head> 
<title>Download File From MySQL</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 
<? 
include 'library/config.php'; 
include 'library/opendb.php'; 

$query  = "SELECT id, name FROM files"; 
$result = mysql_query($query) or die('Error, query failed'); 
if(mysql_num_rows($result) == 0) 
{ 
    echo "Database is empty <br>"; 
}  
else 
{ 
    while(list($id, $name) = mysql_fetch_array($result)) 
    { 
?> 
    <a href="download.php?id=<?=$id;?>"><?=$name;?></a> <br> 
<?         
    } 
} 
include 'library/closedb.php'; 
?> 
</body> 
</html> 


Ik hoop dat jullie weten wat ik er aan kan doen. Alvast bedankt.

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

gebeurt dit probleem in IE en Firefox of alleen IE? IE kan niet goed omgaan met headers!

Edit: is je MySQL veld BLOB?

[ Voor 16% gewijzigd door Snake op 29-09-2005 21:34 . Reden: iets bijvoegen ]

Going for adventure, lots of sun and a convertible! | GMT-8


  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

En wat voor veld(type) is content?

United we stand, and divided we fall


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Dus wij moeten voor je debuggen? Zo werkt het niet.

- Je schrijft je code
- Je kijkt wat er fout aan is
- Je minimaliseert de code welke je hier post tot het punt waar je met aan zekerheid grenzende waarschijnlijkheid weet dat de fout daar zit
- Je vermeld wat je zelf geprobeerd hebt

Anyone who gets in between me and my morning coffee should be insecure.


Verwijderd

Hier inder is een voorbeeldje van hoe je je data uit je DB trekt en weer serveert... Hoop dat je wat hebt aan mijn voorbeeldje...

DownloadFile.php Example (wat dingetjes veranderd, zaols je ziet is nix ge-escaped en alleen voor eigen gebruik, als je dit in het 'openbaar' wilt gaan gebruiken, zorg dan dat je de GET var's valideert....

<snip> @ reusachtige, onleesbare code listing.

Cheers, laat maar weten of je er wat aan hebt ;) delen zijn bij elkaar geraped, van allerlei tutorial sites, dit was ooit een testje van me, zit een hoop onzinnige zooi in die ik zelf heb gemaakt, maar het geeft je iig een werkend voorbeeld waar je wat van kunt leren ;)

[ Voor 95% gewijzigd door NMe op 29-09-2005 23:49 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

MueR schreef op donderdag 29 september 2005 @ 21:33:
Dus wij moeten voor je debuggen? Zo werkt het niet.

- Je schrijft je code
- Je kijkt wat er fout aan is
- Je minimaliseert de code welke je hier post tot het punt waar je met aan zekerheid grenzende waarschijnlijkheid weet dat de fout daar zit
- Je vermeld wat je zelf geprobeerd hebt
Inderdaad, het zou fijn zijn als je deze info nog even vermeld, Justifier. Zoals het er nu staat is je topic nogal een debugrequest, en die zien we hier liever niet. Debuggen is iets dat je zelf moet kunnen, en pas in de laatste instantie, als je er echt niet uitkomt, kun je hier een topic openen. :)

offtopic:
@CMG: heel aardig dat je Justifier wil helpen, maar ik ben bang dat jouw code hem niet echt op weg helpt. Het dient voor zover ik kan zien een ander doel dan wat hij voor ogen heeft, en verder is je code vrij onleesbaar. Om je code leesbaarder te maken/houden kun je bijvoorbeeld al die overbodige lege regels weghalen (een lege regel kun je gebruiken om blokken samenhangende code te scheiden van elkaar, niet om na elke regel te gebruiken ;)), en je zou kunnen overwegen om je code te indenteren. Over het schrijven van nette code staat ook een leuk stukje in onze FAQ. :)

edit:
Ah, ik zie dat het niet eens je eigen code is. In dat geval kan de topicstarter dit alles ook wel met Google terugvinden. Nog los ervan dat het geen geweldig staaltje code is. :)

[ Voor 7% gewijzigd door NMe op 29-09-2005 23:48 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1