![]() |
php fileupload, zum x-ten
habs mit hilfe dieser anleitung versucht, nur bekomme ich wenn ich dann am server das script ausführe, die meldung
Warning: Unable to open 'D:\Programme\apache\htdocs\poco\shop\shopkeeper\p ix\artikel\all\artikel.jpg' for reading: No such file or directory in /home/po006vmo/www/home/shop/shopkeeper/create.php on line 101 offensichtlich wird damit gerechnet, daß der pfad sich auf dem server befindet, aber der copybefehl sollte doch von der eigenen hd ein file uploaden können! und dort existiert ja der pfad auch! der zielpfad existiert ebenfalls auf dem server. was kann der grund für diese meldung sein? |
In der Variablen $bild hast Du den temporären Dateinamen, unter dem Du das hochgeladene Bild auf dem Server findest. Der Variablenname ergibt sich aus dem Namen des input-Form-Elements:
<input type='file' name='bild'> In $bild_name findet sich DER KOMPLETTE NAME INKL. DES PFADES, unter dem die Datei auf dem Client abgelegt war. Du musst Dir daher erst den richtigen Filenamen aus $bild_name heraus-regexen, und Dir dann einen korrekten Zielpfad für den Copy-Befehl bauen. $bild_name direkt als Ziel bei copy anzugeben wird nicht funktionieren. Klar? |
das ist mir schon klar, sonst würds ja auf meinem eigenen server, wo ich das script getestet habe, nicht gehen, wenns den zielPFAD nicht gäbe, an den ich dann den dateinamen anfüge. von dem her sollte es also passen, mein copybefehl schaut ca. so aus:
copy($pfad_auf_client_von_inputfeld_inkl_dateiname , $pfad_auf_server . $nur_dateiname); müßte doch eigentlich passen, oder? |
Jup :) - nur in deinem ersten posting sah es so aus, als würdest Du die Pfade vom client und vom server mischen.
|
nein, mach ich nicht.
bin mittlerweile draufgekommen, daß die extraktion des dateinamens aus dem pfad heraus nicht funktioniert, allerdings nur am anderen server (linux), auf meinem eigenen (windows) schon, nur warum das so ist, verstehe ich nicht, ich mach das mit $nur_dateiname = basename($pfad_auf_client_von_inputfeld_inkl_datei name); könnte aber damit zusammenhängen, daß linux ein "\" nicht als trennzeichen akzeptiert und basename nicht gescheit genug ist, mit "/" und "\" umzugehen. |
hab mir grad bei php.net die beschreibung von basename angesehen, linux versteht tatsächlich nur "/" als trennzeichen. hab also händisch die extrahierung vorgenommen, und zwar mit
$dateiname = strrchr($pfad_inkl_dateiname, "\"); dann habe ich sowas wie "\datei.jpg" $nur_dateiname = substr($dateiname, 1); macht daraus ein "datei.jpg" somit ist die extraktion komplett, nur leider löst das mein problem nicht, das war zwar ein bug, aber jetzt bekomme ich immer noch die meldung Warning: Unable to open 'D:\Programme\apache\htdocs\poco\shop\shopkeeper\p ix\artikel\all\artikel.jpg' for reading: No such file or directory in /home/po006vmo/www/home/shop/shopkeeper/create.php on line 106 und das, obwohl der copybefehl mit den richtigen argumenten versorgt wurde. ich hab den befehl doch nicht falsch verstanden, es wird eine LOKALE datei auf einen anderen server kopiert, oder? |
bitte nehmt es einem php-nixwisser net übel wenn er helfen will, aber:
könnte es helfen, wenn du in $pfad_auf_client_von_inputfeld_inkl_dateiname alle "\" mit "/" auswechselt? gruss |
das wäre vllt. eine möglichkeit, aber ich hätte doch gern eine lösung, die sowohl von linux- wie auch von windowsservern läuft.
|
Versuchs zur Abwechslung mal damit:
http://www.zachwhite.com/ das hat bei mir einwandfrei geklappt. Vielleicht kommst ja über den Umweg ein anderes Skript auszuprobieren hinter den Fehler beim ersten. Ps: Es klappt zumindest vom Desktop zum Linux-Server im Internet. |
Also bei mir funktioniert dein Skript vom phpforum auch.
Hab ich gerade probiert, und zwar ohne irgendwelche Umstände/Anpassungen. Das Einzige was mir dazu einfällt wäre evtl. daß du das Verzeichniß für die Bilder am Server vielleicht nicht chmod 777 hast so wie in der Anleitung gefordert. Wobei die Bilder ins selbe Verz. abgelegt werden in dem auch das Skript liegt. Und, wie kann das Skript einen Fehler in Line 101 haben, es hat doch original nur 37 Zeilen ? |
| Alle Zeitangaben in WEZ +2. Es ist jetzt 15:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag