Formular senden und Antwort als Bild speichern..aber wie?

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

  • Formular senden und Antwort als Bild speichern..aber wie?

    Hallo Forumler...
    ich habe da ein kleines Problem. Und zwar möchte ich gerne ein Formular an einen externen Geo-Server schicken. Von diesem bekomme ich dann ein jpg zurück, dass ich gerne lokal speichern möchte. Da die Erstellung des jpg´s auf dem geo-server relativ lange dauert, möchte ich die Antwort quasi temporär lokal ablegen, vorausgesetzt, dass die vorhandene Grafik älter als x Tage ist.
    Meine Frage: Wie kann ich das Formular über php senden (also nicht über den "submit"-Button)und wie kann ich dann die Antwort als jpg abspeichern?

    Danke Euch schon mal für die Antworten
    Grüße
    Andreas

  • #2
    Re: Formular senden und Antwort als Bild speichern..aber wie?

    Original geschrieben von JimiRakete
    Wie kann ich das Formular über php senden (also nicht über den "submit"-Button)
    http://www.php-faq.de/q/q-code-post.html
    und wie kann ich dann die Antwort als jpg abspeichern?
    Über die ganz normalen Funktionen des Dateisystems.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Schau mal im Manual, fsockopen. Dort ist auch ein POST-Request erläutert (User Comments), falls Dein Formular per POST versendet wird.

      Die Antwort kannst Du dir dann mal als Klartext anschauen, Du siehst dann schon, was Du herausfiltern musst (HTTP-Response-Header und Kleinkram). Speichern kannst Du Dann per fwrite o.ä.
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        Erst einmal vielen Dank!
        Request absenden passt und geht.
        Wenn ich nun die Antwort als jpg speichern möchte muss ich doch die header-informationen des Formulars abschneiden und nur das jpg speichern, oder?
        Woran erkenne ich Anfang und Ende des jpg´s?

        Kommentar


        • #5
          Original geschrieben von JimiRakete
          Wenn ich nun die Antwort als jpg speichern möchte muss ich doch die header-informationen des Formulars abschneiden und nur das jpg speichern, oder?
          Nicht "die Header-Informationen des Formulars", sondern die Response Header
          Woran erkenne ich Anfang und Ende des jpg´s?
          Den Anfang erkennst du daran, dass die Response Header zuende sind, und das "Ende" daran, dass nichts weiteres mehr kommt.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6

            und das Ende des Response-Headers?

            Kommentar


            • #7
              Sehe ich das richtig...

              \r\n\r\n

              am Ende des Response-Headers und ab dort mein jpg?

              Kommentar


              • #8
                Das hier habe ich gerade noch dazu gefunden!

                http://www.obrador.com/essentialjpeg/headerinfo.htm

                Grüße und Danke!

                Kommentar


                • #9
                  Hallo nochmal...
                  so, ich habe nun mal die Funktion kopiert und den Request an den Server geschickt..

                  PHP-Code:
                  function PostToHost($host$path$referer$data_to_send) {
                    
                  $fp fsockopen($host80);
                    
                  printf("Open!\n");
                    
                  fputs($fp"POST $path HTTP/1.1\r\n");
                    
                  fputs($fp"Host: $host\r\n");
                    
                  fputs($fp"Referer: $referer\r\n");
                    
                  fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
                    
                  fputs($fp"Content-length: "strlen($data_to_send) ."\r\n");
                    
                  fputs($fp"Connection: close\r\n\r\n");
                    
                  fputs($fp$data_to_send);
                    
                  printf("Sent!\n");
                    while(!
                  feof($fp)) {
                        
                  $res .= fgets($fp);
                    }
                    
                  printf("Done!\n");
                    
                  fclose($fp);

                    
                  $resParts explode("\r\n\r\n"$res);
                    if(!
                  $resParts[1]) echo "Keine JPG-Daten vorhanden!";
                    
                    
                    return 
                  $res;
                  }



                  printf("Go!\n");
                  $x PostToHost(
                                
                  "xxxx.xxxx.xxxx",
                                
                  "/xxx/xxx/xxx",
                                
                  "http://xxx.xxx.xxx.?xxx=xxx",
                                
                  $data
                  );

                  echo 
                  $x
                  Es wird nun aber ausschliesslich der Antwort-Header ausgegeben? Nix mit binärem jpg..? Kann mir jemand helfen?

                  Code:
                  Go! Open! Sent! Done! Keine JPG-Daten vorhanden!
                  HTTP/1.1 200 OK Content-Type: text/html Connection: close 
                  Expires: -1 Date: Mon, 26 Jun 2006 15:03:55 GMT Server: 
                  Apache Tomcat/4.1.29 (HTTP/1.1 Connector) Set-Cookie: 
                  JSESSIONID=BE7D6F1F6D2E5C8A71043428A128CA6C; Path=/igisa
                  Vielen Dank!
                  Zuletzt geändert von wahsaga; 26.06.2006, 16:16.

                  Kommentar


                  • #10
                    Und du hast natürlich in der Quelltext-Ansicht deines Browser nachgesehen, und nicht nur dummerweise in der HTML-Anzeige ...?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Hallo..

                      ja, habe ich!
                      Noch Eine Idee, woran es liegen könnte?

                      Kommentar


                      • #12
                        Online-Beispiel deines Auslese-Scriptes ...?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          onlinelink

                          Kurze Erklärung noch...

                          Die ganze Sache funktioniert so....
                          unter der Adresse
                          http://map.geo-coaching.net/igisa/se...mageformat=jpg

                          bekommst DU eine Karte einer Region. Wird nun über ein Formular an eben diese Adresse eine Liste von POI - Points of Interest - geschcikt, werden diese im jpg eingezeichnet. Das ist dann das Bild, das ich speichern möchte.

                          Die Liste der Pois wird übertragen mit
                          Code:
                          <input name=poi value="xxx"></input>
                          Danke!

                          Kommentar


                          • #14
                            Original geschrieben von JimiRakete
                            PHP-Code:
                            $resParts explode("\r\n\r\n"$res); 
                            Das ist vermutlich nicht sonderlich günstig.
                            Die Binärdaten eines Bildes können ja durchaus diese Zeichen x-fach enthalten ...
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Hallo..
                              klar, könte sein! Ich übergebe aber ja unten auch die Variable $res - in der steht ja alles unverändert!
                              Mittlerweile bin ich aber ein bisschen weiter gekommen!

                              PHP-Code:
                              function PostToHost($host$path$referer$data_to_send) {
                                
                              $fp fopen($referer"b");
                                
                              fputs($fp"POST $path HTTP/1.1\r\n");
                                
                              fputs($fp"Host: $host\r\n");
                                
                              fputs($fp"Referer: $referer\r\n");
                                
                              fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
                                
                              fputs($fp"Content-length: "strlen($data_to_send) ."\r\n");
                                
                              fputs($fp"Connection: close\r\n\r\n");
                                
                              fputs($fp$data_to_send);
                                while(!
                              feof($fp)) {
                                    
                              $buffer .= fgets($fp);
                                }
                                
                              fclose($fp);
                                
                                return 
                              $buffer;
                                
                              }

                              $x PostToHost(
                                            
                              "map.geo-coaching.net",
                                            
                              "/igisa/servlet/mediamap.servlets.app.geocoaching.Controler",
                                            
                              $referer,
                                            
                              $data
                              );
                              echo 
                              $x
                              Jetzt bekomme ich zumindest im IE mal ein Bild!
                              Sieht so aus, als würde die Datei keinerlei Headerinformationen beinhalten. Im Moz bekomme ich nun aber alles binär.. Muss ich quasi händisch einen Header schreiber, oder?

                              Grüße

                              Kommentar

                              Lädt...
                              X