Hallo H-P Ortner,
Ja, du hast vollkommen richtig erkannt, dass mir das Detail mit der zweiten Seite entgangen war und ich muß zugeben, dass ich den Sinn dieser Seite_zwei noch immer nicht ganz verstanden habe.
Also ich habe es bisher so verstanden:
Die Seite_eins ist verantwortlich, dass ich mir die Datei von meinem Client auswählen kann. Diese Seite_eins muss auch nicht auf dem Server liegen. Sie muss lediglich den folgenden Eintrag aufweisen, der die Daten an die darin angegebene Adresse/Server weitergibt, damit dieser sie auswerten kann:
<form action="http://Ip.Deines.Boards/motorsteuerung3.html" enctype="multipart/form-data">
Habe ich also die Datei ausgewählt und dann schickt der Client etwas an den Server. Der wertet die gesendeten Daten aus. Ja und das würde mir schon ausreichen, wenn denn die Daten die der Client schickt den Dateiinhalt mit enthalten würden. :)
Und wozu benötige ich Seite 2? Diese Seite_zwei macht was?
Also wenn das nur eine Antwortseite ist, die mir die gesendeten Daten auf dem Client noch einmal anzeigt, dann brauch ich die nicht.
Oder muss ich das so interpretieren, dass es sich nicht wirklich um eine Seite, sondern einen Programmaufruf für ein Programm handelt (z.B. Antwort.pl, Antwort.php, Antwort.asp, Antwort.cgi oder sogar Antwort.exe), welches vom jeweiligen Betriebssystem des Servers abgearbeitet wird. Läd dieses Programm dann etwa erst den Inhalt meiner Datei hoch?
Ich habe dann auch gleich mal deine vorgeschlagenen Schritte abgearbeitet:
1. Ich habe ein lokales Formular mit dem namen motorsteuerung6.html auf dem Client erstellt. In diesem kann ich die Datei auswählen die ich hochladen will. Sie enthält:
<form method="POST" action="http://10.97.1.16/motorsteuerung4.html" enctype="multipart/form-data" target="_new">
<input type="file" name="File" size="50"><br>
<input type="submit" value="DATEIUPLOAD STARTEN" name="Submit">
</form>
2. Auf meinem Web-Server habe ich sämtliche Einträge über CGI versucht zu übernehmen die auf deinem folgenden Link angegeben waren:
http://selfhtml.teamone.de/cgiperl/intro/umgebungsvariablen.htm#uebersicht
Dies habe ich wie folgt realisiert:
r_get_cgi_param(url_and_args,"CONTENT_LENGTH",CONTENT_LENGTH_char);
Durch diese Funktion wird mir der Wert CONTENT_LENGTH von der Web-Seite an meinen C-Code übergeben und dort in den Character CONTENT_LENGTH_char eingetragen.
Diese Übergabe möchte ich noch ein wenig erläutern, denn das könnte evtl. die Schlüsselfigur in diesem Problem sein. Der Kommentar zu der Funktion ist wie folgt:
static void r_get_cgi_param(char *url_and_args,char *parameter, char *value_out)
// | Extract a single CGI parameter from the arguments
// |
// | URL and arguments are of the form
// |
// | <url>?<param>=<val>+<param>=<val>...
// |
// | Example: /controls/index.html?number=300&menu=fish
// |
// | This routine takes that URL and arguments string and
// | pulls out the named parameter into a string you
// | pass in. If you pass NULL for the parameter, it
// | extracts just the URL.
// | If the named parameter is not present, it returns
// | a zero-length string for the value_out.
Diese Funktion übernimmt also lediglich die Werte aus der Adresszeile. Ist das ausreichend?
Mit den anderen Variablen bin ich analog vorgegangen.
Nun habe ich mir angeschaut was die Variablen enthalten:
Nun, sie enthatlen alle das Gleiche, in etwa:
D%3A%5CWorkStud%5Ctest.txt
Das ist die Verzeichnisangabe meiner Datei die ich verschicken möchte: D:\WorkStud\test.txt
Aber von einem Dateiinhalt ist keine Spur, aber genau die hätte ich erhofft.
Kannst du mir bitte sagen, warum ich nix von den Daten sehe?
Wird der Dateiinhalt überhaupt schon verschickt? Ich glaube eher nein, oder ist die oben genannte Funktion r_get_cgi_param dafür nicht geeignet?
Viele Grüße,
Michael