EisFuX: Upload per HTTP PUT?

Beitrag lesen

(Hallo|Hi(ho)|Tag|(Na|Guten A)bend) mrkrabs,

Hallo zusammen
Ich hätte eine Frage zu der upload Methode HTTP PUT.
Leider weiss ich nicht, wie ich etwas per PUT hochlade.
...
Also ich will dann die Datei xxx.txt dort hochladen. Welche Schritte muss ich machen um dies zu erreichen?

Erstmal würde ich mir an deiner Stelle ein paar Grundlagen zu HTTP und der Methode PUT[1] anlesen. Möglicherweise käme für dich nämlich auch ein alternatives Verfahren wie WebDAV in Frage.

Dann brauchst eine Client-Software, die per HTTP-PUT Dateien hochladen kann: Es gibt die Java-Applikation Winie, als Kommandozeilen-Tool den HTTP-Client mit Curl. Perl-Bastler greifen auf ein passendes Modul ("HTTP::Request") zurück, Python-Fans nehmen HTTP PUT.

Auf der Serverseite benötigst du eine Software, die per HTTP-PUT gesendete Dateien entgegennimmt und abspeichert. Die konkrete Vorgehensweise hängt natürlich von der auf deinem Server installierten Software ab:

In PHP liest man die Daten über "php://input" ein. Im PHP-Handbuch findest du dazu ein sehr einfaches Beispielskript. Beachte auch die "User Contributed Notes" darunter. Da beim Entgegennehmen einer Datei und beim Abspeichern auf dem Server eine Menge schief gehen kann, muss dieses Einfachst-Skript um eine Menge Fehlerabfragen erweitert werden.

Für Perl gibts sicher irgendwo im CPAN auch ein passendes Modul (wahrscheinlich CGI).

Für den Apachen gibts auch mod_put, das ohne Scriptsprache auskommt.

In allen Fällen musst du dir weiterhin Gedanken über Datensicherheit machen. Dein Server-Skript benötigt zusätzlich eine Benutzer-Authentifizierung, sonst kann jeder Depp (möglicherweise gefährliche) Dateien hochladen oder existierende Dateien auf dem Server überschreiben oder löschen.

Es wäre sehr nett, wenn ihr mir exakt sagen könnt was ich machen muss, da ich leider davon keine Ahnung habe.

Nööö, exakt kann ich dir nicht sagen, was du machen musst -- denn dazu müsstest du exakter sagen, was du eigentlich tun willst:

Mal angenommen der Server ist eingerichtet für PUT und ich möchte von mir auf die Seite http://www.xyz.de/xxx/xxx/ eine Datei hochladen, welche für PUT eingerichtet ist, aber nicht auf dem eigenem Server liegt.

Das ist zumindest mir nicht exakt genug. ;-)
Beispielsweise ist "mir" keine sehr exakte Beschreibung des Clients und seiner Fähigkeiten. Und was der Server so kann, ist mit "für PUT eingerichtet" auch nicht sooo exakt beschrieben. ... Würde ich mal meinen, min Jung ... ;-)

[1] Leider spuckte mir[2] Google wenig brauchbare Links zum Thema HTTP-PUT aus. Aber den Quellcode für Pythons HTTP_Put finde ich durchaus lehrreich.

[2] Mit anderen Such-Einstellungen gibts vielleicht bessere Ergebnisse ...

MffG
EisFuX