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 Vad har du för databas?
Finns funktionen LOAD_FILE i den?
Och hittas filen?
Det är mysql 4.0.18
och hur kollar jag om mysql hittar filen?
yohpopsMedlem sedan feb. 20011 198 inlägg 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.
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 Softlänkar?
Detta är en virtuell filväg '/tmp/file-original.dat'
Detta är en fysisk 'c:\web\tmp\file-original.dat'
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 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.
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