Automatischer Upload

Hallo,

weiß jmd. eine Möglichkeit wie ich einen Upload realisieren kann, bei dem automatisch eine vorgegebene lokale Datei (z.B. c:\test.png) auf einen Server hochgeladen wird. Mit den Funktionen copy() und move_uploaded_file() scheint es schon mal nicht zu gehen- wahrscheinlich weil dort vorher über den Upload Dialog manuell eine Datei ausgewählt werden muss um einen autorisierten Upload zu ermöglichen.

Gruss und Danke
Gallus

Z.B.:

copy(„c:\Source\test.png“, „/Dest/Test.png“);

Hallo

PHP hat mit dem Upload nichts zu tun. PHP kann lediglich hochgeladene Dateien weiterverarbeiten.

Der Upload selbst wird über ein HTML-Uploadformular gesteuert. Theoretisch könnte man dieses Formular per JavaScript automatisch ausfüllen und absenden, allerdings wird das von den meisten Browsern aus Sicherheitsgründen blockiert.

Man könnte höchstens ein Java-Applet einbinden, welches den Upload erledigt.

Gruß Johannes

Du vermischst da glaube ich ein paar Sachen:

  • PHP ist auf der Serverseite aktiv (meistens zumindest) und produziert HTML/JS/… für den Client.
  • Zum Uploaden einer Datei brauchst du die Client-Seite.

Copy ist abhängig von den Wrappern. Ein Upload per HTTP ist nicht möglich (s.a. http://de2.php.net/manual/de/wrappers.http.php), per FTP wiederum kannst du auch einfach den Copy - Befehl benutzen: http://de2.php.net/manual/de/wrappers.ftp.php !

Bedenke jedoch, dass PHP dann auf dem Client laufen muss, nicht auf dem Server!


Was willst du nun genau machen?

  1. Soll das PHP-Skript eine Upload-seite generieren?

  2. Soll das PHP-Skript den Upload verarbeiten?
    $_FILE[‚meineDatei‘]

Hallo,

ich brauche wohl die komplizierter Lösung. Es soll automatisch ein Upload durchgeführt werden. Ich werde mir PHP-CLI und CURL mal genauer anschauen. Für weitere Hilfestellungen würde ich mich freuen.

Danke und Gruss

Hallo

Sehe ich das richtig, dass die Sache nur auf einem Rechner laufen soll? Dann ist es nicht die beste Methode, das über einen Browser laufen zu lassen.

Hat der Server zu dem hochgeladen werden soll auch FTP? Das würde die Sache vereinfachen.
Alternativ könnte man auch versuchen mit dem Progamm wget einen HTTP-Upload durchzuführen.

Gruß Johannes

Hallo,

ja der Server hat auch FTP. Eine Realisierung muss mit einem Browser (IE) umgesetzt werden und ist für ein paar Rechner gedacht. Ist ein FTP-Upload mit PHP dann möglich oder doch ein Applet.

Gruss und Danke
Gallus

Hallo

Wenn der Upload durch das Aufrufen einer Seite im IE ausgelöst werden soll, sehe ich außer einem Java- oder ActiveX-Plugin keine Möglichkeit.

Alle anderen Ansätze erfordern, dass auf den betreffenden Rechnern irgendwelche Programme installiert oder sonstige Vorbereitungen getroffen werden.
Wobei da vielleicht schon das Anlegen einer Verknüpfung reicht, denn Windows ist in der Lage FTP-Uploads durchzuführen, man muss ihm bloß sagen von wo nach wo. Ich hab bloß grad kein Windows zur Hand um das zu testen.

Johannes

Also wenn du schreibst, dass es im IE laufen muss, dann kann es nicht mit PHP-Cli realisiert werden.

Ein automatisiertes hochladen mittels HTML/JS funktionier nicht (und hat auch seinen Grund). Wieso muss es denn der IE sein? Können die „Menschen“ nicht einfach auf ein Symbol auf dem Desktop doppelklicken, dann wäre es ganz einfach und du wärst im falschen Forum :smile: Du würdest dann einfach eine kleine Batchdatei schreiben, die z.B. ein php-script aufruft, welches wiederum die Datei mittels copy auf dem FTP-Server schiebt? Wenn das dein wunsch ist, dann kann ich dir das eben fertig machen. (da es insgesamt 1 Zeile Batch und 1 Zeile PHP ist :smile:)

Bye.

Hallo,

klar das wäre echt super, wenn du mir die zwei Zeilen „programmieren“ könntest…Vielen Dank Gallus

Hi,

hier beispielhaft (da ungetestet und ohne Fehlerauswertung) die beiden Dateien:

Batch (evtl. absoluten Pfad zu php angeben, sofern dieser nicht im Path steht)

php kopieren.php

kopieren.php (im gleichen Pfad wie die Batch)

<?php copy('c:\\quelldatei.txt','ftp://user:stuck_out_tongue:asswortd@ziel/datei.txt');<br>?\>

Wie Johannes Matschke jedoch korrekt schrieb, kannst du es sicherlich auch direkt über eine Batch lösen. Beides hat Vor-/Nachteile.

Wenn du sicherstellen kannst, dass auf jedem Client PHP in der gleichen Version installiert ist, würde ich diese Variante nutzen. Des weiteren musst du sicherstellen, dass der FTP-Server den Passivmodus unterstützt.
http://de3.php.net/manual/de/wrappers.ftp.php

Wenn du jedoch sicherstellen kannst, dass überall das Windows-Kommando ftp vorhanden ist, dann kannst du evtl. auch die reine Batchvariante nehmen; diese ist auch notwendig, wenn der FTP-Server den passiven Modus nicht zulässt.