[php] binary probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Ik heb een script gevonden voor plaatjes te uploaden in binairy in een mysql database, dit gaat verder allemaal prima. Alleen het opvragen geeft enkel binairy tekst i.p.v. een plaatje :(

het download.php bestand
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php 
  include ("config.php"); 
    $db = mysql_connect("$hostname", "$username", "$password"); 
    mysql_select_db("$database", $db) or die(mysql_errno() . ": " . mysql_error() . "<br>");   
     $sql = "SELECT bin_data, filetype, filename, filesize FROM leden_bestanden WHERE id_files=$id"; 
     
  $result = @mysql_query($sql, $db); 
  $data = @mysql_result($result, 0, "bin_data"); 
  $name = @mysql_result($result, 0, "filename"); 
  $size = @mysql_result($result, 0, "filesize"); 
  $type = @mysql_result($result, 0, "filetype"); 
     
  header("Content-type: $type"); 
  header("Content-length: $size"); 
    // Als je een opslag dialoog scherm wilt zien, 
    // verander onderstaande code in: header("Content-Disposition: attachment; filename=$name"); 
  header("Content-Disposition: filename=$name"); 
  header("Content-Description: PHP Generated Data"); 
  echo $data; 

?> 


De database:

id_files - bin_data - description - filename - filesize - filetype - username
2 - [BLOB] - test - Sample.jpg - 9894 - image/pjpeg - Elect

(even geen screenshot omdat de pc net is geformatteerd, sorry)
Misschien dat jullie een idee hebben waarom hij hem niet omzet naar een image?

[ Voor 9% gewijzigd door Elect op 11-03-2003 19:58 ]

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

Verwijderd

Het lijkt dan op een probleem met de headers... Als je die nou eens echo??? Kwestie van eenvoudig debuggen lijkt mij...
Verder hoef je variabelen niet te quoten ("$password", "$database", etc)

Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Als ik de waarden van $type, $size en $name echo krijg ik netjes image/pjpeg, 58991 en Sample.jpg
Heb de quotes ook weggehaald, was idd niet nodig

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

image/pjpeg kan ik me goed van voorstellen dat je browser die niet kent. Probeer eens gewoon image/jpeg ?

Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Dan doet hij het nog steeds niet :(
Vreemd genoeg maakt de database dit er zelf van, evenals het activetopics forum (als ik in de database kijk). Dus dat zal standaard zijn?

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
image/pjpeg bestaat wel. Het is Progessive JPEG. Zou niet veel uit moeten maken...
Kun je image/jpeg anders niet hardcoden? Zie verder niet veel bijzonders.

Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Ik wil hem best hardcoden, als ik aanneem dat je dit bedoelt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php  
  include ("config.php");  
    $db = mysql_connect($hostname, $username, $password);  
    mysql_select_db($database, $db) or die(mysql_errno() . ": " . mysql_error() . "<br>");    
     $sql = "SELECT bin_data FROM leden_bestanden WHERE id_files=$id";  
      
  $result = @mysql_query($sql, $db);  
  $data = @mysql_result($result, 0, "bin_data");  
 
  header("Content-type: image/pjpeg");  
  echo $data;  
?>


Alleen maakt het geen verschil uit, is er geen alternatief om de binairy om te zetten?

[ Voor 9% gewijzigd door Elect op 11-03-2003 20:30 ]

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
1. het is binary dus niet met een extra i!
2. waarom wil je het zo graag in de db zetten? dit vertraagt ontzettend, kan je niet beter de bestanden gewoon in een directory zetten?
3. haal alsjeblieft die @'s weg voor je mysql_query. Hierdoor kan je niet eens zien of je daar wat fout doet...
4. Output je niet wat voor de tijd ofzo? Bijvoorbeeld in config.php..... Want als je er zeker van bent dat je data juist in de database staat, dan zou het toch moeten werken zo....

Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
1. Sorry :P
2. Kan in principe wel, maar database kost geen MB's bij de hosting :)
3. k, done
4. Nope, config bestaat enkel uit de gegevens van $hostname etc.

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Maar weet je dan wel zeker dat de data in je db correct is?

Acties:
  • 0 Henk 'm!

  • Elect
  • Registratie: Mei 2000
  • Niet online
Ik heb de oplossing uiteindelijk toch gevonden, schijnbaar geeft hij ook headers door als er een include ("config.php"); bijstaat.

HelmChat.eu - Free Motorcycle Group Chats


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ik heb de oplossing uiteindelijk toch gevonden, schijnbaar geeft hij ook headers door als er een include ("config.php"); bijstaat.
Nee. PHP sluit de headers af zodra je met outputten begint. Als in config.php dus toevallig een spatie na een ?>, of voor een <?php staat, of je echo't of print iets, kunnen de headers niet meer verzonden worden.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1