Hi,
ich will n Bild (und auch andere Dateien) in ne DB laden (kommt mir jetzt nicht mit "nicht in ne DB laden, sondern auf den Server..". Vorgabe ist es, das Zeuch in ne DB zu laden).
Bei manchen GIF´s klappt es, bei anderen nicht.
Dann erscheint eine SQL Fehlermeldung "... Falsche Syntax in der Nähe von... serverity(15)...", gefolgt von einer " message: Bezeichner: ..... it zu lang, 128 Zeichen erlaubt...".
Meine Infos:
IIS Webserver, PHP 4.3.1, SQL 5.0 DB-Server
danke schomma
Hmmmm.
Und Du glaubst jetzt wirklich, diese dürftigen Angaben reichen aus
um eine definitive Fehleraussage treffen zu können ?
Kannst du mir wenigstens sagen, wie groß BLOB-Felder im
(Microsoft ????) SQL 5 sein dürfen.
Mit fragenden Grüssen
jubilee
Moin jubilee,
also zu den BLOB Feldern:
Ich weiss nicht ob das weiterhilft, aber da steht "Grösse: 16"
Achso, ja, ist n MS SQL Server
hier mal mein Quellcode:
Dateiupload:
in der Variable test steht der Dateipfad aus nem INPUT TYPE="FILE", das ganze wird per METHOD="POST" weitergegeben:
........
$datei=$_POST['test'];
$datei=str_replace("\\\\","\\",$datei);
$groesse=$_FILES['datneu']['size'];
$groesse2=round($groesse/1024,2);
$name=$_FILES['datneu']['name'];
$endung=substr(strrchr($datei,"."),1);
....
switch($endung)
{
case "jpeg": case "jpg": case "jpe":
$typ="image/jpeg"; break;
case "gif":
$typ="image/gif"; break;
case "bmp":
$typ="image/bmp"; break;
case "png":
$typ="image/png"; break;
case "tif": case "tiff":
$typ="image/tiff"; break;
case "asc": case "txt":
$typ="text/plain"; break;
case "doc":
$typ="application/msword"; break;
}
.......
$data=addslashes(fread(fopen($datei, "r"),$groesse));
$sql_ins="INSERT INTO $tabelle (objectid,blobid,blobsize,lastmodified,name,data) values (100001,100001,$groesse,'22.04.2003 08:57:23','$name','$data')";
mssql_query($sql_ins,$verbindung);
.......
Bei manchen Bilder klappt der Upload, bei anderen aber nicht.
Hier einmal ein Auszug der Fehler:
C:\Inetpub\wwwroot\win2000.gif #<- Pfad zum Bild
4.56 K #<- Grösse
win2000.gif #<- Bild
Warning: mssql_query() [function.mssql-query]: message: Zeile 3: Falsche Syntax in der Nähe von '§'. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '÷h^oÅ"Å,,ˇž€ ţ× ŇÃeÅ•Â,,Ã"aÅ"[üyvŘZz¤)¨!qôyhbdů°ß[&G L`€A2ÃŽ#J1Ęx\"Â...ŽŚŕ~@Å¡(×L\0\0Å"iăŒ\')YăŽZˆ!n>mÂ'JT$\0Lt\0Â'ÂÅ Å"—aŠ') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit '•ŒáÄ'Ã,,DÃ,F1Â"†Ã"ČŇ:Ë›Núƃ\'Ť#w™GzćŤOźţ¤§Â'~ÉOnPe†źÚ@ÂŽIPXBQÂ"Ňě:k†ĘjúÃ"TÅ'¤‡Év2˘¤#^âşśkŠ+qÃ"Ä›H=ĘŃÃYÃ,,‡AéÃŕäÃ,DÅ¡Ã"Kˇě#=yÅ¡O~öÃ"¤lyŠ') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit 'Ë›&ddÂ"żY/ŰÂ'HbwÂŽÂ'Âr3šÂ)\0Śů:Â'c çŠÃ"\"Âŕ§ęmÄ Â´Å Å›Å Â™Ã¤Â™Â›Â¸pYÂ\0 œÉџşšŸ QÂ?Â,ϠYv bŸÃ"ž×Ã,* ZҚšÂ"=Ym>!žŠÂÄšažLÅ¡Ä,,Å,Š™ěiŸî)GÄŽW%') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
Warning: mssql_query() [function.mssql-query]: message: Bezeichner (beginnend mit 'Ä...{Ä... ›Ä...㊦žúšŰ&ßʢť°$kÄ...k˛ÚĽtůÄ...°BţŻź‹JYř˛Ú ~˲ÄúŞÄŠÂ"+ŇŃŞ;+Ë›pŠÅ, ;Ä...4 Å,++Å,gy´5k5=K´˛@Å¥D7{†Ń1ľA™I ľ&â˛Mű}1K3űľLÅ¥sÄŒÃľ9Ť¨') ist zu lang. Die Maximallänge beträgt 128. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
Warning: mssql_query() [function.mssql-query]: message: Öffnendes Anführungszeichen vor der Zeichenfolge 'Ä...{Ä... ›Ä...㊦žúšŰ&ßʢť°$kÄ...k˛ÚĽtůÄ...°BţŻź‹JYř˛Ú ~˲ÄúŞÄŠÂ"+ŇŃŞ;+Ë›pŠÅ, ;Ä...4 Å,++Å,gy´5k5=K´˛@Å¥D7{†Ń1ľA™I ľ&â˛Mű}1K3űľLÅ¥sÄŒÃľ9Ť¨Y'. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
Warning: mssql_query() [function.mssql-query]: Query failed in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
(Zeile 105 ist der mssql_querry. Ich habe die Vermutung das manche Sonderzeiche nicht durch einen Slash aufgehoben werden, so das die QUERY wegen nem Syntaxfehler fehl schlägt. Nur warum werden die Sonderzeichen nicht aufgehoben. Ich rufe doch "addslashes" auf?! Oder sollte ich den Upload anders amchen?)
Nach einer Auflistung der Daten in der Datenbank kann man dann per Klick auf den Namen, welcher zugleich ein Link ist, sich die Datei anzeigen lassen, wobei dann aber nur ein leeres Fenster erscheint...
Übergeben wird die ID aus der Datenbank, für die Datei.
Hier der Quellcode:
...
$sql3="SELECT name,data FROM $tabelle WHERE blobid = '".$_GET['ID']."'";
$result=mssql_query($sql3,$verbindung);
if(mssql_num_rows($result)==1)
{
$name=mssql_result($result,0,0);
$dat=mssql_result($result,0,1);
$endung=substr(strrchr($name,"."),1);
switch($endung)
{
case "msg":
$typ="message/http"; break;
case "xls": case "XLS":
$typ="application/msexcel"; break;
case "zip":
$typ="application/zip"; break;
case "jpeg": case "jpg": case "jpe":
$typ="image/jpeg"; break;
case "gif":
$typ="image/gif"; break;
case "bmp":
$typ="image/bmp"; break;
case "png":
$typ="image/png"; break;
case "tif": case "tiff":
$typ="image/tiff"; break;
case "asc": case "txt":
$typ="text/plain"; break;
case "doc":
$typ="application/msword"; break;
}
$kopf="Content-type: ".$typ;
header($kopf);
echo $dat;
}
else
{
die("Fehler!");
}
...
So, ich hoffe das hilft weiter?
gruss MastaET
[Editiert am 22/4/2003 von MastaET]
Hallo !
Zitat$data=addslashes(fread(fopen($datei, "r"),$groesse));
Warum das ?
Das Bild ist doch eine Binärdatei. Da kannst Du doch kein
addslashes drauf ausführen.
An addslashes darfst Du nur einen String übergeben.
Das würde ich aber nochmal genau überprüfen.
Mfg
jubilee
Hi,
wie lade ich denn sonst die Datei hoch?
Ich lese die ja per fread ein, daraus entsteht dann doch ne Zeichenkette, die dann in die DB geschrieben wird. Oder nicht??
Deshalb habe ich gedacht, das ich besser die "addslashes" Funktion benutze um Sonderzeichen zu "tilgen".
hab das ganze jetzt ohne addslashes gemacht..
erscheinen tut jetzt folgendes:
C:\Inetpub\wwwroot\win2000.gif
4.56 K
win2000.gif
Warning: mssql_query() [function.mssql-query]: message: Öffnendes Anführungszeichen vor der Zeichenfolge 'GIF89aČ|'. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
Warning: mssql_query() [function.mssql-query]: message: Zeile 1: Falsche Syntax in der Nähe von 'GIF89aČ|'. (severity 15) in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
Warning: mssql_query() [function.mssql-query]: Query failed in c:\inetpub\wwwroot\HL\html\upload2.php on line 105
quasi das, was unter $data steht (wenn man "addslashes()" weglässt).
PS: merci für die schnelle Hilfe, find ich echt klasse (das ist ein LOB ;) )
Hmmm ...
Dann wohl doch mit addslashes.....
Aber addslashes filtert nur ' << >> \ NUL
Ansonsten musst Du addcslashes nehmen und die
zu maskierenden Zeichen selbst angeben ---->
Zitat$data=addcslashes(fread(fopen($datei, "r"),$groesse),"\'§");
Evt klappt das dann besser. Die zu maskierenden Zeichen am Ende zwischen die " setzen.
Rückgängig dann mit stripcslashes ()
MfG
jubilee
hi,
uiuiui, wär ne Idee, ich probier das mal ;)
danke
UPDATE:
Ne, das bringt auch keinen Erfolg.
Ich glaube ich muss die Datei irgendwie anders in die Datenbank rein laden..
hast du evtl. nen Tip wo ich sowas nachlesen könnte?
[Editiert am 22/4/2003 von MastaET]