Tjo!
Ska direkt säga att jag vet inte om denna tråd borde ligga i PHP eller Apache. Skit samma
Jo, jag har/hade en liten gullig upload som sparade filerna enkelt o smidigt i min mySQL-databas.
Visar sedan bilderna med hjälp av en php-fil. Funkade perfekt för två dagar sedan, då jag körde på gamla IIS(5.1).
Nu har jag även installerat Apache 1.3.22 och allt flyter på bra, både PHP, (chili!)ASP samt databaserna.
Satt idag o surfade omkring på en upload-skriptet och skulle ladda upp en bild.
Till min dampiga förvåning såg jag att filen inte blivit korrekt uppladdad.
Den visar halva bilden och sedan trasas den sönder. Som om den droppat data på vägen in till databasen.
Felsökte problemet genom att under uploadprocessen testa upload genom filsystem (copy()) och det funkade fint.
Ingen trasig bild där, inte. Dem redan befintliga bilderna i databasen visas också korrekt,
så det är inte heller fel på filen som skriver ut bilden.
[Tabelluppsättning: images]
id....................int
image.................longblob
image_type............varchar(50)
image_name............varchar(50)
image_size............int
h.....................int
w.....................int
och så till koderna (rensade från skräpkod)....
[upload]
<?php
if($_FILES){
$image_types = Array("image/jpeg","image/gif");
if(is_uploaded_file($_FILES["pfil"]["tmp_name"])){
$image = addslashes(fread(fopen($_FILES["pfil"]["tmp_name"],"r"),filesize($_FILES["pfil"]["tmp_name"])));
$image_size = $_FILES["pfil"]["size"];
$image_type = "image/gif";
$image_name = "usr".$_SESSION['id'].".gif";
if(in_array(strtolower($image_type),$image_types)){
if($image_size <= 20000){
$size = getimagesize($_FILES["pfil"]["tmp_name"]);
$w = $size[0];
$h = $size[1];
mysql_connect(********,****,****);
mysql_select_db(***);
mysql_query("DELETE FROM images WHERE image_name='{$image_name}'");
mysql_query("INSERT INTO images (image,image_size,image_type,image_name,w,h) VALUES ('{$image}','{$image_size}','{$image_type}','{$image_name}',{$w},{$h})");
echo "Jaja... filen uppladdad... weoweo";
} else { echo "<font color=\"CC0000\"><b>[ ERROR ]</b><br>- Filen får max vara 20Kb stor</font>"; }
} else { echo "<font color=\"CC0000\"><b>[ ERROR ]</b><br>- Tillåter endast *.gif och *.jpg -format</font>"; }
} else { echo "<font color=\"CC0000\"><b>[ ERROR ]</b><br>- Ett fel uppstod -> kan inte läsa filen.<br>- Var god försök igen.</font>"; }
}
?>
<form method="post" action="*****.php" enctype="multipart/form-data">
<b>Sökvägen till din profilbild</b><br>
<input type="file" name="pfil" size="30"><br>
<input type="submit" value="LADDA UPP BILDEN">
</form>
[visa bild]
<?php
if(isset($_GET['usr'])){
mysql_connect(********,****,****);
mysql_select_db(***);
if($rs = mysql_fetch_array(mysql_query("SELECT * FROM images WHERE image_name='usr".$_GET['usr'].".gif'"))){
} else {
$rs = mysql_fetch_array(mysql_query("SELECT * FROM images WHERE image_name='none.gif'"));
}
} else {
$rs = mysql_fetch_array(mysql_query("SELECT * FROM images WHERE image_name='none.gif'"));
}
$image = $rs['image'];
$image_type = $rs['image_type'];
Header("Content-type: $image_type");
print $image;
?>
Aja... mycket skit, men det funkade iaf innan.
Nu är frågan; är det fel på min kod, php-konfigurationen, eller apache?
Ska tilläggas att php-konfigurationen till Apache är så gott som identisk med IIS'.
Har också testat situationen på två servrar med samma resultat
Någon som varit med om nåt liknande, eller ännu bättre... har en lösning?
Rubriken ändrad mha §1 i wf´s regelsamling
PeW / moderator