[php/win2k] Image streamen gaat fout

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Steven
  • Registratie: December 2000
  • Laatst online: 05-07 21:17
Hoi,

Ik heb het volgende scriptje om eerder geuploade plaatjes te streamen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//[knip]
$plaatjeres = execute_query("SELECT bestand, mimetype FROM plaatjes WHERE id='" . $_GET["id"] . "';");

$plaatje = mysql_fetch_assoc($plaatjeres);

if (($fp = fopen($file, "rb")) && mysql_num_rows($plaatjeres) == 1) {
    header("Content-disposition: filename=\"" . $plaatje["bestand"] . "\"");
    header("Content-type: " . $plaatje["mimetype"]);
    header('Expires: Mon 25 Jan 1993 02:00:00 GMT');
    header('Last-Modified: '.gmdate("D, d M Y H:i:s").' GMT');
    header('Cache-Control: no-cache');
    header('Cache-Control: post-check=0, pre-check=0');
    header('Pragma: no-cache');
    header("Content-length: " . filesize($file));
    
    fpassthru($fp);
}


Als ik dit script onder Linux gebruik dan gaat alles perfect en als een zonnetje. Doe ik dit echter onder Windows (PHP 4.3.2) dan krijg ik iets als het volgende (maar telkens iets anders):
Afbeeldingslocatie: http://www.heijtel.nl/eekhoorn.jpg

Als je het plaatje direct opent krijg je wel een goed plaatje.

Al geprobeerd:
• Kijken of de waarden in de database kloppen
• Kijken of filesize() goed werkt
• Met de "b" van fopen "gespeeld"
• Readfile() geprobeerd
• Half internet overhoop gehaald.


Heeft er nog iemand suggesties?

[ Voor 13% gewijzigd door Steven op 18-04-2004 18:06 ]


Acties:
  • 0 Henk 'm!

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 20-09 06:39

Willem2

Ω is futile

Het lijkt erop dat je image beschadigd wordt tijdens de passthru.

Dit doet het bij mij prima onder windows & linux:

PHP:
1
2
3
4
5
6
7
8
$fp = fopen ($file, "r");
while (!feof ($fp)) {
    $buffer  = fgets ($fp);
    $image .= $buffer;
}
fclose ($fp);

echo $image;


Je kunt voor de zekerheid er RB van maken, dan weet je zeker dat windows de image als binary opent. Ook opletten bij uploaden dus dat je FTP programma in binary staat en niet ASCII !

en nee, ik houd niet van voetbal... :)


Acties:
  • 0 Henk 'm!

  • Steven
  • Registratie: December 2000
  • Laatst online: 05-07 21:17
Je komt hier alleen in de geheugen problemen als het bestand groter is dan de geheugen limiet van PHP (default 8MB). Maar dat zal met plaatjes natuurlijk zelden gebeuren.

Ik ga het proberen, tnx :)

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Komt je 8MB niet in totaal in gevaar? Dus plaatje en ander dataverkeer op hetzelfde moment?
(Lijkt me moeilijk hoor, maar toch)