Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi http Upload mit Indy Fehler 405 (https://www.delphipraxis.net/57583-http-upload-mit-indy-fehler-405-a.html)

stoxx 23. Nov 2005 15:26


http Upload mit Indy Fehler 405
 
ich möchte eine Datei per HTTP Upload ins Internet laden.
Der Ordner hat eigentlich alle Freigaben. Besitzer, Gruppe und Andere dürfen Lesen, schreiben und ausführen in dem Ordner.
Dennoch bekomm ich irgendwie keinen zugriff drauf und es kommt die Fehlermeldung 405 "Method Not Allowed".
Was muss ich noch beachten, damit das funzt ? .. Dankeschön !

Delphi-Quellcode:
 if (OpenDialog1.Execute) then
  Pfad := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  Stream := TStream.Create;
  Stream := Pfad;

  try
     IdHTTP1.Put('http://www.myserver.de/my/', Stream);
  finally
    Stream.Free;
  end;

Phistev 23. Nov 2005 16:19

Re: http Upload mit Indy Fehler 405
 
Erlaubt der Server denn das Erstellen von Dateien auf diesem Wege? Wahrscheinlich nicht, da die Methode PUT ein potenzielles Sicherheitsloch darstellt. Entweder nutzt du POST + PHP-Skripte oder FTP

P.S.: Statt erst Pfad und dann Stream zu belegen, kann man auch schreiben:
Delphi-Quellcode:
stream:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
(Polymorphismus)

stoxx 23. Nov 2005 16:42

Re: http Upload mit Indy Fehler 405
 
ich merke gerade, dass ich mich da viel zu wenig auskenne. idhttp.post gibts bei mir übrigens gar nicht (mehr) ..
Welchen Sinn haben dann die Attribute von Verzeichnissen wenn das so wie ich möchte, nicht gehen sollte ?
(Gibt es denn freie FTP Server im Netz ? .. müssen keine großen Dateien unterstützen, will aber nicht meinen FTP Zugang jedem zur Verfügung stellen ;-)
Es geht darum, dass die Nutzer meines Programms Dateien gemeinsam nutzen können ...

Zitat:

Statt erst Pfad und dann Stream zu belegen, kann man auch schreiben:
ja, das ist schon klar, keine Sorge ;-)
nur hab ich mir das Programmieren in der Art und Weise gar nicht erst angeeignet.
Wenn man komplizierte Sachen mal debuggen will ist man eh wieder am aufdröseln von solchen Konstrukten ;-)

Phistev 23. Nov 2005 16:50

Re: http Upload mit Indy Fehler 405
 
Für gemeinsam genutzte Dateien bietet sich POST + PHP an.Stichwörter sind move_uploaded_file(), evtl. auch <form enctype="multipart/form-data"> und <input type="file">.
Zum Theoretischen: PUT erstellt die Dateien direkt, der Inhalt des Bodys wird an der URL geschrieben und das war's. Wenn der Server keine Authentifikation verlangen würde, könnte also jeder alles überschreiben... deshalb ist das normalerweise deaktiviert.
Bei POST ist der Body lediglich die Eingabe für das Skript/Programm, welches hinter der URL steht.

DGL-luke 23. Nov 2005 17:29

Re: http Upload mit Indy Fehler 405
 
Die Rechte ("modes"), die man im FTP einstellen kann, haben auch überhaupt nix mit irgendwelchem zugriff von aussen zu tun.

Das sind die Linux-Zugriffsrechte, die für Owner ( Konto, dem die Datei gehört; üblicherweise Ersteller, kann von Superuser und drüber geändert werden), Group ( Konten, die in der selben Gruppe wie Owner sind, kann von Owner und drüber geändert werden) und alle anderen(Änderungsreche wie Group), die wirklich am server angemeldet sind, gelten. Bei HTTP-Upload kommunizierst du nur mit einem Webserver, welcher normalerweise als eigenes Konto ( z.b. "Apache" ;) ) läuft und normalerweise kein SU ist.

Am sichersten/besten ist hier wirklich ein PHP-Skript, da du einfach alles nachprüfen kannst( Woher die Datei kommt, ob das ganze authentifiziert ist, Größenbschränkung...).


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz