Fehler bei Dateiupload
Andreas Vogt
- php
Hallo,
habe folgenden php-code:
$bild = $_REQUEST['bild'];
$image = $_FILES['bild']['tmp_name'];
$image_name = $_FILES['bild']['name'];
$randomIMG = substr(md5(microtime()),0,3);
$picture = $randomIMG."_".$image_name;
$path = "http://www.webseite.de/images/Links/";
copy($image, $path.$picture);
...
Formularbezeichner "bild" sowie Domain-Pfade stimmen, Rechte auf Verz. Links sind auf 777 gesetzt.
Bekomme als Fehler:
Warning: copy(http://www.webseite.de/images/Links/f6f_logo.jpg) [function.copy]: failed to open stream: HTTP wrapper does not support writeable connections. in /var/www/xxx/xxx/httpdocs/admin/ad_weblinks.php on line 341
Zeile 341 ist die Zeile mit dem copy.
Wo ist das Problem?
Gruß Andreas
Hallo!
$path = "http://www.webseite.de/images/Links/";
Ist das ein Pfad?
copy($image, $path.$picture);
Nimm das weg, was Du oben irrtümlich für einen Pfad hälst bzw. ergänze den Namen der zu erstellenden Datei um eine absolute oder relative Pfadangabe.
Oder wolltest Du /so/ eine HTTP-Ressource erstellen? Das geht nicht, denn:
HTTP wrapper does not support writeable connections.
Mittels PHP kannst Du aber in das lokale (aus Sicht von PHP) Filesystem schreiben s.o.
Ciao
GG
Mahlzeit Andreas Vogt,
(oder sollte ich Ilja Faehnrich sagen?)
$path = "http://www.webseite.de/images/Links/";
Bitte verwende für Beispiel-URLs die dafür vorgesehenen Domains (rfc2606).
Bekomme als Fehler:
Warning: copy(http://www.webseite.de/images/Links/f6f_logo.jpg) [function.copy]: failed to open stream: HTTP wrapper does not support writeable connections. in /var/www/xxx/xxx/httpdocs/admin/ad_weblinks.php on line 341Zeile 341 ist die Zeile mit dem copy.
Wo ist das Problem?
Das Problem wird doch in der Fehlermeldung recht deutlich beschrieben - wo genau besteht da ein Verständnisproblem?
Du versuchst per HTTP eine Datei irgendwohin zu schreiben. Warum tust Du das auch? Gib doch sinnvollerweise lieber einen lokalen Dateisystempfad an.
MfG,
EKKi
Hallo,
wer ist Ilja Faehnrich?
Also beim Bund war ich nicht.
Ja ich weiss, ich sollte keine so dummen Fehler machen ;-)
Habs auch grad gemerkt dass ich statt der URL den $_SERVER["DOCUMENT_ROOT"] verwenden sollte.
Gruß und Danke
Andreas
Mahlzeit Andreas Vogt,
wer ist Ilja Faehnrich?
Der Inhaber der von Dir missbrauchten Domain.
MfG,
EKKi
Hi,
Mahlzeit Andreas Vogt,
(oder sollte ich I*** F*******h sagen?)
Nein, solltest du eigentlich eher nicht.
wer ist I*** F*******h?
Der Inhaber der von Dir missbrauchten Domain.
Der Hinweis darauf, bitte die vorgesehenen Domains für Beispiele zu benutzen, und keine echten (oder potentiell existenten), ist zwar berechtigt.
Aber hältst du es für angebracht, hier jetzt auch noch den Namen des Domaininhabers hinzuschreiben, auf das dieser im Archiv und damit auch in den Suchmaschinen landet?
MfG ChrisB
Hi!
Neben dem schon Gesagten:
$bild = $_REQUEST['bild'];
Was versprichst du dir von derartigen Umkopieraktionen?
$image = $_FILES['bild']['tmp_name'];
$image_name = $_FILES['bild']['name'];
Warum hast du dich nicht vergewissert, ob der Upload überhaupt geklappt hat?
$randomIMG = substr(md5(microtime()),0,3);
Mir wären drei Zeichen nicht zufällig genug, um guten Gewissens Kollisionen auszuschließen zu können.
copy($image, $path.$picture);
Das ist nicht die vorgesehene Funktion zum Kopieren von hochgeladenen Dateien.
Schau dir das Kapitel zu file uploads im PHP-Handbuch an.
Lo!
Hallo,
Mir wären drei Zeichen nicht zufällig genug, um guten Gewissens Kollisionen auszuschließen zu können.
das sind pro Dateiname über 46000 Kombinationen
Sicher, bei vielen 10-tausenden oder 100-tausenden Dateien wäre ich mir nicht sicher, aber bei unserem kleinen Verein mit ein paar 100 Bildern...
Gruß Andreas
Hi!
Mir wären drei Zeichen nicht zufällig genug, um guten Gewissens Kollisionen auszuschließen zu können.
das sind pro Dateiname über 46000 Kombinationen
Das es so viele sind, und sie dir ausreichen, glaub ich dir gern. Aber dass du rein zufällig immer wieder eine unbenutzte triffst, ist nicht garantiert.
Lo!