webForumDet fria alternativet

Oförklarlig bugg.

8 svar · 352 visningar · startad av rincewind

rincewindMedlem sedan nov. 2003104 inlägg
#1

Hej, nu har jag suttit och kämpa med en bugg i snart 3 timmar. Får inte bort den,

Är det någon som är duktig på sådant här?

Jag har en

<form method='post' name='maintextbox' ENCTYPE='multipart/form-data'> <input TYPE='file' NAME='filename' size=36>
<input type='submit' name='send' value='Skicka'>
</form>

Sedan efter postningen kommer:

if ($_POST['send' ])
{
if (file_exists($_FILES[filename][tmp_name]))
{
			$fileName=$_FILES[filename][name];
			$fileType=$_FILES[filename][type];
			$sizeOrginal=filesize($_FILES[filename][tmp_name]);			

			$sql= "insert into mp_files(fileOrigName, fileType, fileData, fileSize, fileTitle, fileText)
				            values('$fileName','$fileType',LOAD_FILE('".$_FILES[filename][tmp_name]."'),$sizeOrginal,'$_POST[title]','$_POST[textinput]')";

			echo $sql;				
			mysql_query($sql) or die ("ERROR: ".mysql_error());					

}
}

Jag får då felet:
insert into mp_files(fileOrigName, fileType, fileData, fileSize, fileTitle, fileText) values('ikon1.png','image/x-png',LOAD_FILE('/tmp/phpsaHjh3'),230300,'asd','sda')
ERROR: Column 'fileData' cannot be null

Någon som har några förslag vad felet kan vara?
Jag har kollat i linux och filen laddas verkligen upp.
Tacksam för hjälp
-- Rincewind

yohpopsMedlem sedan feb. 20011 198 inlägg
#2

Vad har du för databas?
Finns funktionen LOAD_FILE i den?
Och hittas filen?

rincewindMedlem sedan nov. 2003104 inlägg
#3

Det är mysql 4.0.18

och hur kollar jag om mysql hittar filen?

yohpopsMedlem sedan feb. 20011 198 inlägg
#4

Prova att köra LOAD_FILE('/tmp/phpsaHjh3') men med rätt filnamn.
Jag antar att mysql vill ha en fysisk sökväg till filen inte en virtuell.

rincewindMedlem sedan nov. 2003104 inlägg
#5

Virituell fil? Softlänkar eller?

Provade detta istället:

			$orginal= '/tmp/file-original.dat';
			move_uploaded_file($_FILES[filename][tmp_name],$orginal);
			$fileName=$_FILES[filename][name];
			$fileType=$_FILES[filename][type];
			$sizeOrginal=filesize($orginal);			

			$sql= "insert into mp_files(fileOrigName, fileType, fileData, fileSize, fileTitle, fileText)
				            values('$fileName','$fileType',LOAD_FILE('".$orginal."'),$sizeOrginal,'$_POST[title]','$_POST[textinput]')";

			echo $sql;				
			mysql_query($sql) or die ("ERROR: ".mysql_error());					
}

och får detta fel:
insert into mp_files(fileOrigName, fileType, fileData, fileSize, fileTitle, fileText) values('ikon1.png','image/x-png',LOAD_FILE('/tmp/file-original.dat'),230300,'634','4363')
ERROR: Column 'fileData' cannot be null

yohpopsMedlem sedan feb. 20011 198 inlägg
#6

Softlänkar?

Detta är en virtuell filväg '/tmp/file-original.dat'
Detta är en fysisk 'c:\web\tmp\file-original.dat'

rincewindMedlem sedan nov. 2003104 inlägg
#7

Ah, men det är ett linux OS jag kör.. Debian... =)

Men jag provadet det.. Lade upp en exe fil som jag har rättigheter till (och webservern), och provade ladda in den mha en sql fråga.

Det fungerar inte heller..
samma fel medelande:

insert into mp_files(fileOrigName, fileType, fileData, fileSize, fileTitle, fileText) values('winamp503_full.exe','application/octet-stream',LOAD_FILE('/tmp/winamp503_full.exe'),4406768,'44','4123')
ERROR: Column 'fileData' cannot be null

yohpopsMedlem sedan feb. 20011 198 inlägg
#8

OK.

Felet verkar vara att LOAD_FILE inte kan ladda filen.
Hoppa över insert strängen och skicka in en typ.
print LOAD_FILE('/tmp/filenfilen.fil')
eller liknande.

rincewindMedlem sedan nov. 2003104 inlägg
#9

Fick i ordning på det.

Gjorde hela sql inmatningen fast inte fileData. Plockade sedan ut ID nummret på raden.

Sedan fick jag köra en update set fileData = load_file('$orignal') where fileID=".mysql_insert_id();

då verkar allt ha börjat fungera.
Verkar som om servern inte riktigt "han med" att lägga dit filen innan SQL:en började köra i gång.

Mysko, men nu fungerar det.
Tackar för all hjälp!!!

Mvh
-- Rincewind

149 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)