Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Schräge Frage zum Thema Dateiupload mit php

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema [Erledigt] Schräge Frage zum Thema Dateiupload mit php.

    [Erledigt] Schräge Frage zum Thema Dateiupload mit php

    Hallo,
    ich bin derzeit dabei mir ein kleines Content Management system für meine Website zu basteln. Nachdem ich die Sache am Anfang mittels pure-php angegangen bin und mir das Hirn mit Parameterübergaben zwischen HTML-Formularen geröstet habe bin ich als erfahrener c++-Programmierer auf die Idee gekommen, den Client als native Windows-Anwendung zu implementieren und lediglich HTML-gets und puts über eine HTTP-Komponente als Aufrufe von php-scripts zu implementieren.

    Ich rufe z.B. eine addpage.php auf meinem Webserver auf, die eine Page zur Site hinzufügt. Ich hoffe das Konzept kommt irgendwie rüber. Ich bin ziemlich erkältet und mein Schädel funktioniert nur auf halber Kraft

    Also "emuliert" mein C++-Programm einen Browser und ruft die passende URL auf.

    In meinem "CMS" wird viel Gebrauch von xml-Dateien gemacht, welche Sites, Content und sonstigen Kram beschreiben. Anstatt nun jedesmal, wenn sich etwas kleines ändert, die Änderungen an den xml-Dateien von php-Skripten auf dem Server ausführen zu lassen, würde ich gern ab und zu komplette xml-Dateien auf den Server hochladen. Ich möchte dazu keine FTP-Technik verwenden.

    Es ist doch z.B. möglich in einer HTML-Datei ein Formular mit einem Eingabefeld vom Typ "file" und einen Submit-Button dazu zu verwenden mittels POST ein php-Skript aufzurufen und eine Datei hochzuladen. Meine bescheidene Frage ist nun, wie ich ein solches Verhalten mittels meines C++-Programms hinbekomme. Wie gesagt verwende ich eine HTTP-Komponentenklasse meiner C++ Umgebung (Borland C++-Builder). Diese ermöglicht den Aufruf einer URL, POST und GET-Methoden und lliefert das Ergebnis (z.B. HTML-Seite) in einem Puffer.

    Hat jemand irgendeine Idee, die mir weiterhelfen könnte ? Ich kann ja schliesslich den Inhalt der Datei nicht einfach als Riesenvariable in die URL schreiben. Zumal das mit XML-ASCII-Daten recht lustig werden würde.

    Bin wie immer dankbar für jede Hilfe

    alionsonny

  • Gast-Avatar
    Ein Gast antwortete
    also...
    wenn du schon c++ zu verfügung hast könntest das ganze doch auch mit einem socket machen...
    anstelle der nmhttp komponente öffnest du einen socket auf dein php file und sendest das ganze so rüber... mmh

    [edit] - autsch, ich war auf seite 1 :S naja frohes neues jahr!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Also nochmal thanx an alle. Mein Problem hat sich inzwischen erledigt. Ich verwende jetzt auf C++-Seite die libcurl-Bibliothek, und setze einfach HTTP-Posts ab. Funktioniert ganz fein und man hat die volle Kontrolle über die Dinge, die passieren.

    Gruß und danke an alle

    alionsonny

    Einen Kommentar schreiben:


  • Basti
    antwortet
    Vielleicht hilft dir das hier weiter:

    http://www.indyproject.org/Sockets/index.en.iwp

    Basti

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Danke @ Lokari:

    Ich hätte doch etwas mehr im PHP-Umfeld suchen sollen. Ich habe eine Site gefunden auf der recht detailliert beschrieben wird, wie man mittels eines einfachen Sockets einen HTTP-POST-Request an ein php-Skript absetzt. Das wird es dann wohl tun.

    Danke nochmals

    alionsonny

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    ähmm...

    http://www.google.de/search?q=php+po...:de:unofficial

    bei mir ergebnis #4

    http://www.tu-chemnitz.de/docs/php/f...le-upload.html

    das erklärt den php-part relativ gut würd ich sagen

    Was den C++-Part angeht kann ich Dir leider nicht helfen, aber Dein Problem scheint ja aktuell auch eher der php-part zu sein.

    ich hab sowas erst kürzlich realisiert (die php seite) und das funktioniert nach bissl rumprobieren eigentlich recht einfach. Wir haben daraus einen automatischen screenshotuploader mit userverifizierung etc. gebaut. FTP wäre hier viel zu umständlich und wenig kontrollierbar gewesen.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von karl-150
    Btw: Warum stellst Du die Frage eigentlich in einem PHP-Forum?
    Weil ich in einem C++-Forum damit erst recht schief liegen würde. Ich habe das gesamte Web nach einer Lösung abgesucht. Die meisten treffer waren russische Sites und mein Kyrillisch ist etwas eingerostet

    Gruß

    alionsonny

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Naja Karl, ich weiß jetzt auch nicht so recht was Du meinst. Also, ich übergebe der Post-Methode der c++-Klasse einmal eine URL:

    http://localhost/admin/index.php

    Das funkt auch ganz prima, soll heißen das betreffende php-skript wird tatsächlich aufgerufen. Als zweiten Parameter bekommt die Post-Methode den dateinamen inklusive Pfad der hochzuladenden Datei. Das sieht dann z.B. so aus

    Component->Post("http://localhost/admin/index.php","c:\\test.txt");

    Also, wohlgemerkt das ist es auf der c++-Seite. Wenn ich nun im php-Skript folgendes mache:

    print_r($_FILES);

    kommt dabei:

    Array
    {
    }

    raus.

    Gruß

    alionsonny

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    @Zergling:

    @alionsonny:
    Zitat von alionsonny
    Die Komponente meldet Erfolg, obwohl das $_FILES-Array im aufgerufenen php-skript leer ist.
    Wie sehen denn die gesendeten Daten aus? Ist da was von Deiner Datei zu sehen?

    Btw: Warum stellst Du die Frage eigentlich in einem PHP-Forum?

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Code:
    <form enctype="multipart/form-data" action="upload.php" method="post">

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Naja, vielleicht kennt ja doch jemand die TNMHTTP-Komponente im C++-Builder

    Ich weiß nämlich nicht, wie ich obiges Konstrukt in dieser Komponente verwenden sollte. Dort gibt es eine Funktion namens Post, die eine URL und einen Dateinamen entgegen nimmt. Die Komponente meldet Erfolg, obwohl das $_FILES-Array im aufgerufenen php-skript leer ist. Zumindest ergibt das ein print_r-Aufruf im Skript.

    Also irgendwie kommt die Datei nicht an

    Gruß

    alionsonny

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Re: Schräge Frage zum Thema Dateiupload mit php

    Zitat von alionsonny
    Tja, und genau das ist die Frage, nämlich, wie ich die Datei in den POST-Request bekomme.
    Das sollte dann in etwa wie folgt aussehen:
    Code:
    Content-Type: multipart/form-data; boundary=BOUNDARY
    Content-Length: DATEIGROESSE
    
    BOUNDARY
    Content-Disposition: form-data; name="NAME"; filename="DATEINAME"
    Content-Type: CONTENT-TYPE
    
    DATEIINHALT
    BOUNDARY--
    Wahrscheinlich bietet aber Deine Klasse, die hier ja keiner kennt, eine vereinfachte Möglichkeit.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Re: Schräge Frage zum Thema Dateiupload mit php

    Zitat von karl-150
    Zitat von alionsonny
    Es ist doch z.B. möglich [...] mittels POST [...] eine Datei hochzuladen.
    Zitat von alionsonny
    HTTP-Komponentenklasse [...] ermöglicht den Aufruf einer URL, POST und GET-Methoden
    Die Komponente ist also in der Lage einen Post-Request zu senden!?

    Was hindert Dich nun daran hierrüber eine Datei hochzuladen?
    Tja, und genau das ist die Frage, nämlich, wie ich die Datei in den POST-Request bekomme. Wie gesagt, kann ich ja schlecht die Datei als ASCII-Zeichenkettenparameter in die URL einfügen.

    Irgendwie kapiere ich nicht, wie das ganze funktionieren soll.

    Ich werde mir nochmal die HTTP-Komponente detailliert vornehmen. Vielleicht habe ich was übersehen.

    Danke soweit

    alionsonny

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    dann benutze 'POST' wie es karl-150 schon geschrieben hat

    lg. clan

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Das Problem ist, daß die Lösung auch auf Webaccounts laufen soll, für die kein FTP-Login möglich ist.

    Gruß

    alionsonny

    Einen Kommentar schreiben:

Lädt...
X