Announcement

Collapse
No announcement yet.

IdHTTP upload möglich?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • IdHTTP upload möglich?

    Servus.
    Ich benötige für ein System das ich schreibe die Möglichkeit eine Datei auf einen Webserver hochzuladen, ohne einen FTP nutzen zu wollen! Da ich immer wieder feststelle, dass bei einem zyklichen Download via FTP (Verbindungs-) Fehler auftreten, suche ich eine Alternative. Zwar sind manche Fehler zu umgehen, aber diese Methode ist schlicht gesagt fürn Ar***.
    Man kennt es ja von Websites, dass ein sogenannter 'Webupload' möglich ist. Die Größe der zu uploadenden Datei bestimmt der Webserver. Dahei meine Frage:

    Ist es möglich mit der Indykomponente TIdHTTP eine Datei auf den Webserver hochzuladen bzw eine Datei auf diesem zu erstellen? Und wie soll das Funktionieren. Die Hilfe von Borland hilft mit leider nicht grade so...

    Im Prinzip muss das Programm die folgende Funktion haben:
    Eine Datei wird vom Server heruntergeladen, wenn sie vorhanden ist (diese Abfrage weiß ich auch nch nicht zu realisieren, außer mit try/catch). Ist diese Datei nun runtergeladen worden soll eine Datei auf dem Server erstellt werden, die dafür sorgt, dass der Server beim aktuallisieren der zu hernunterladenden Datei den Inhalt löscht und praktisch die Datei neu erstellt. Die hochgeladene Datei wird dann automatisch gelöscht. Das ganze bildet somit ein Handshake-Verfahren, welches zugegebenermaße sehr bescheiden gelöst wird (bzw ja eben nciht von mir gelöst wird)...
    Wenns ne bessere Methode gibt, ich bin ganz Ohr (oder heißt das in Foren: ich bin ganz Auge???)
    Ants aren't dead

  • #2
    Nein, nutze FTP, das geht auch "zyklisch"
    Christian

    Comment


    • #3
      Korrektur -> idHTTP -> Put...Wenn der Webserver dies zulässt
      Christian

      Comment


      • #4
        Ich weiß dass ich mit FTP was zyklich machen kann, so hab ich es bisher ja gelöst.
        Was ich weiß, dass ich einen Webupload realisieren kann via php solange jede einzelne Datei nicht die 2mb Größe überschreitet...

        Achja, IdHTTP->Put gibt es nicht!!!

        WriteBuffer, WriteFile, Post gibt es jedoch verstehe ich die Syntax nicht oder habe einfach noch zu wenig Ahnung von den Protokollen...
        Ants aren't dead

        Comment


        • #5
          Achja, IdHTTP->Put gibt es nicht!!!
          Gut, dann halt bei dir nicht!!!

          Was ich weiß, dass ich einen Webupload realisieren kann via php solange jede einzelne Datei nicht die 2mb Größe überschreitet...
          Kannst du nicht, da du nicht der Server bist
          Christian

          Comment


          • #6
            Originally posted by Christian Marquardt View Post
            Kannst du nicht, da du nicht der Server bist
            Was soll das denn heißen?
            Ich habe einen Webserver angemietet und bestimte Pakete dazubestellt. Darin unter anderem enthalten, einen Webupload, der es ermöglicht Dateien über das HTTP-Protokoll hochzuladen. Getestet habe ich das bereits mit PHP, indem ich ein Formular angelget habe, indem man einen Pfad einer hochzuladenden Datei angeben konnte. Per Button wurde der Kram hochgeladen. Daher denke ich schon zu wissen, dass es möglich sein sollte.

            Des Weiteren gibt es bei mir in der Komponente IdHTTP kein PUT. Danach hab ich ja direkt gesucht.
            Ants aren't dead

            Comment


            • #7
              Was soll das denn heißen?
              Das soll heissen, dass ich kein Hellseher bin. Dein Fragen (einschl. Threadüberschrift) bezogen sich hier bisher auf Clientseite (FTP,HTTP). Insofern können sich mögliche Lösungen erstmal nur darauf beziehen. Kann nicht hellsehen, dass du einen Server hast, den du selbst programmieren kannst.

              Daher denke ich schon zu wissen, dass es möglich sein sollte.
              Dann solltest du dein Wissen teilen.

              Des Weiteren gibt es bei mir in der Komponente IdHTTP kein PUT.
              Wenn ich dann eine Korrektur gemacht habe, wird wohl die Ursache sein, dass ich ein PUT habe.

              Du hast ja WriteBuffer, WriteFile.
              Christian

              Comment


              • #8
                Originally posted by Exkalaa View Post
                Ist es möglich mit der Indykomponente TIdHTTP eine Datei auf den Webserver hochzuladen
                Dass würde gehen denke ich.

                bzw eine Datei auf diesem zu erstellen?
                Dass geht niemals. Dass kan auch kein andere HTTP Client komponente. Dass was auf der server passiert bestimmt nur der cgi application der in das webserver program auf der servercomputer dreht. Acht wenn du eine datei hochladest mit TIdHTTP dann ist es noch ab zu warten of dass auf der server wieder wie eine datei gepeichert wird. Dass cgi programm kann auch zum beispiel nur data lesen aus die auf ihm zukommende data.

                Aber ich verstehe dass du dass cgi program (oder .dll) selbst programmierst.

                Im Prinzip muss das Programm die folgende Funktion haben:
                Da sprechts du wohl uber zwei programme.

                Originally posted by Exkalaa View Post
                Achja, IdHTTP->Put gibt es nicht!!!
                Doch!

                Dan benutzt du vielleicht eine sehr alte version? Hier in 9 ist sie. Jezt is mann bei 10.

                Sonst benutzt du ->Post() (Ich weis nicht ob du Put() oder Post() benutzen must) aber wenn du die cgi seite selbst machst kannst es tunn wie du wilst.

                Comment


                • #9
                  Dass geht niemals. Dass kan auch kein andere HTTP Client komponente.
                  Leider falsch. Genau dazu ist PUT vorhanden

                  Sonst benutzt du ->Post() (Ich weis nicht ob du Put() oder Post() benutzen must)
                  Leider falsch. Post dient zum übermitteln von Formlardaten. PUT zur Erstellung einer Datei.

                  POST erwartet ein Script, welches die übergebenen Daten auswertet, PUT nicht. Hier würde die Datei direkt auf dem Webserver erstellt werden. Wenn dieser es überhaupt zulässt. Aus verständlichen Gründen ist diese Request-Methode meist deaktiviert

                  Siehe auch WEBDAV -> über HTTP
                  Zuletzt editiert von Christian Marquardt; 29.11.2009, 15:13.
                  Christian

                  Comment


                  • #10
                    Ich benutze die Version 6.0 (Build 10.157).
                    Ich schau mal was sich machen lässt, zur not nutze ich halt doch die IdFTP-Komponente, dann hab ich auch das Problem mit dem Handshake-Verfahren nicht, was ich ursprünglich einsetzen wollte.

                    Die Methode 'Datein auf einen Server hochzuladen' heißt Request?
                    In IdHTTP gibt es eine Eigenschaft die Request heißt, aber das wird damit wohl eher nichts zu tun haben, oder?
                    Ants aren't dead

                    Comment


                    • #11
                      Warum schreibst du nicht einfach ein Server auf PHP-Basis, der die Daten vom Client entgegennimmt? Dann kannst du das machen wie du willst, ohne HTTP, FTP.

                      Die Methode 'Datein auf einen Server hochzuladen' heißt Request?
                      Nein, unter Request versteht man allgemein das, was der Client an den Server sendet. Die Anwort des Servers wird als Response bezeichnet

                      Für HTTP gibt es folgende Request die der Client senden kann

                      HEAD
                      POST
                      GET
                      PUT
                      DELETE
                      LINK
                      UNLINK
                      TRACE
                      Christian

                      Comment


                      • #12
                        Originally posted by Christian Marquardt View Post
                        OST erwartet ein Script, welches die übergebenen Daten auswertet, PUT nicht. Hier würde die Datei direkt auf dem Webserver erstellt werden.
                        Du meinst: ?
                        -bei POST wirdt der webserver alle data weiterleiten nach ein cgi program (dass danach kann bestimmem was es damit macht).
                        -Bij PUT spielt der webserver das spiel aleine und speichert selbst die empfangene daten(wenn er will).

                        Kann eine put nicht weiter geleitet werden nach ein cgiprogram? Denke schon dass das geht. Wass wenn die http client die cgiapp ansprecht mit eine put? Wurde der webserver sagen "ein put ist fuer mich: ich leite es nicht weiter"?

                        Comment


                        • #13
                          ja,meine ich
                          Christian

                          Comment

                          Working...
                          X