Andreas Vogt: Fehler bei Dateiupload

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

  1. 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

    --
    "If I do not seek to understand what is happening here
    - then I've got peanuts in my head!"
    (I. Hosein)
  2. 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 341

    Zeile 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

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. 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

      1. Mahlzeit Andreas Vogt,

        wer ist Ilja Faehnrich?

        Der Inhaber der von Dir missbrauchten Domain.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. 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

          --
          “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  3. 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!

    1. 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

      1. 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!