Frankie: Daten versenden ohne Formular Objekte

Hallo zusammen

auf meiner Seite stehen hat man die Möglichkeit Dateien auf den Server hochzuladen. Ab jetzt stehen diese nur noch in einer Liste und mit einem Aktualisieren Button soll man die Möglichkeit bekommen diese Dateien aktualisieren zu bekommen.

Doch wie schaffe ich es denn per Submit diese Dateien hochladen zu können, da ich ja bisher nur finen konnte das es ja nur per php möglich sein soll?

Wäte eine tolle Sache die Dateien nicht immer neu auf der Festplatte suchen zu müssen und in ein Formular einzusetzen und dies auch noch für alle Dateien.

Würd mich also über Hilfe sehr freuen.

Danke Gruß Frankie

  1. auf meiner Seite stehen hat man die Möglichkeit Dateien auf den Server hochzuladen. Ab jetzt stehen diese nur noch in einer Liste und mit einem Aktualisieren Button soll man die Möglichkeit bekommen diese Dateien aktualisieren zu bekommen.

    Willst du den Nutzern die Möglichkeit geben Dateien auf dem Server zu aktualisieren oder sich eine aktuelle Datei vom Server herunterzuladen?

    1. Hallo zusammen und Vielen Dank

      ich Recherchierte weiter und fand diese Seite:
      http://www.it-gecko.de/html5-file-upload-fortschrittanzeige-progressbar.html

      Und daraus versuche ich folgendes:

      var client = new XMLHttpRequest();  
      var Datei = frames['DatenFrame'].document.getElementsByName("Datei")[0].getAttribute("Datei")  
      alert(Datei)  
         client.open("POST", "upload.php");  
         client.send(Datei);  
      
      
      <?php  
      if (isset($_FILES['datei']))  
      {  
           move_uploaded_file($_FILES['file']['Dateien'], '/pfad_zur_zieldatei/'.basename($_FILES['datei']['name']));  
      }  
      ?>  
      
      

      Ich qürde auch gerne wissen wo die Datei dann landet. Und wie soll ich mit der Seite auf diese Datei wieder zugreifen können?

      Aber bis jetzt ist kein Ergebnis zu sehen. Also wie soll das denn dan funktionieren. Ach und was vielleicht noch interessant sein sollte ist, dass zZ nur server2go eingesetzt wird.

      Danke Gruß Frankie

      1. Hallo zusammen und Vielen Dank

        ich Recherchierte weiter und fand diese Seite:
        http://www.it-gecko.de/html5-file-upload-fortschrittanzeige-progressbar.html

        Und daraus versuche ich folgendes:

        var client = new XMLHttpRequest();

        var Datei = frames['DatenFrame'].document.getElementsByName("Datei")[0].getAttribute("Datei")
        alert(Datei)
           client.open("POST", "upload.php");
           client.send(Datei);

        
        > ~~~php
        
        <?php  
        
        > if (isset($_FILES['datei']))  
        > {  
        >      move_uploaded_file($_FILES['file']['Dateien'], '/pfad_zur_zieldatei/'.basename($_FILES['datei']['name']));  
        > }  
        > ?>  
        > 
        
        

        Ich qürde auch gerne wissen wo die Datei dann landet. Und wie soll ich mit der Seite auf diese Datei wieder zugreifen können?

        Aber bis jetzt ist kein Ergebnis zu sehen. Also wie soll das denn dan funktionieren. Ach und was vielleicht noch interessant sein sollte ist, dass zZ nur server2go eingesetzt wird.

        Danke Gruß Frankie

        Da sind nen paar trivial Fehler drin (die mir spontan auffallen):

        • dein JS ruft ein Frame ab. Hast du ein Frameset? Und wenn ja, initialisiert du denn die "frames" Variable? Und selbst wenn du Frames hast, befindet sich das Feld in einem anderen Frame?

        • Dein PHP Schnipsel ist 1:1 kopiert, du musst dort einen gültigen Path angeben. Sonst gibts nur einen Fehler: '/pfad_zur_zieldatei/'

        Ganz wichtig, hast du dein Script ohne JS zum laufen gebraucht? Reduziere deine Aufgabe auf ein machbares Minimum und verbessere es anschließend.

        Viele Grüße, Ch

        1. Hallo Ch

          Ja die Zeile wurde 1:! rauskopiert und ich ich sammle die Dateien in einem iframe. Also sollte zur php Zeile die komplette Verknüpfung zur Datei gesendet werden, so dass also klar sein sollt um welche Datei es sich handelt.

          Also wie soll dann die php Zeile aussehen?

          Danke Gruß Frankie

          1. Hallo Ch

            Ja die Zeile wurde 1:! rauskopiert und ich ich sammle die Dateien in einem iframe. Also sollte zur php Zeile die komplette Verknüpfung zur Datei gesendet werden, so dass also klar sein sollt um welche Datei es sich handelt.

            Also wie soll dann die php Zeile aussehen?

            Danke Gruß Frankie

            Nochmal:

            • du Initialisiert die "frames" Variable nicht.
            • du gibts keinen gültigen Path an. Dein System kennst nur du, also kennst nur du einenen gültigen Path, Mac/Unix/Windows sind da alle unterschiedlich.

            Hast du dein Upload-Formular ohne die Javascript Variante bereits nutzen können? Wenn nein, dann prüfe erst das, denn siehst du die PHP-Fehler offensichtliche.

            1. Hallo Ch

              ja ich übergebe ja eine Variable. Ich will kein Formular nutzen um Daten an die PHP Datei senden zu können. Und so sehe ich keine Fehlermeldungen. Ich sollte ja wisen wie ich in der PHP Datei mit der übergebenen Variab le umgehe. Oder am besten gleich so:

              Es sind Links die in diesem iframe stehen und da soll es die Möglichkeit geben meherere Dateien aktualisieren zu können. Also sollte ich muss ich ja wissen wie ich in der php Datei mit solchen Variablen umgehen kann.

              Danke Gruß Frankie

              1. Hallo zusammen

                ich habe weitere interessante Zeilen gefunden:

                ar $Datei = frames['DatenFrame'].document.getElementsByName("Datei")[0].getAttribute("Datei")  
                $.post("Upload.php", { Datei: $Datei })  
                
                
                <?php  
                     move_uploaded_file($_FILES['file']['Dateien'], '/pfad_zur_zieldatei/'.basename($_POST['Datei']);  
                ?>  
                
                

                Doch funktionieren will weiterhin nix. Also bitte ich um Hilfe.

                Danke Gruß Frankie

                1. Hallo,

                  ich bin gespannt ob Du wirkliche Hilfe hier bekommst.
                  Ich glaube: NEIN

                  Ulli

                2. Tach!

                  Doch funktionieren will weiterhin nix. Also bitte ich um Hilfe.

                  Hast du den Artikel auf der von dir selbst angegebenen URL überhaupt gelesen und verstanden, besonders die Voraussetzungen an seinem Anfang? XMLHttpRequest in Version 2, ein File-Objekt aus der FileAPI und ein FormData-Objekt. Ich sehe bei dir nur einen Zugriff auf irgendwas mit Frames, vermutlich kommt da ein String raus. Ein String ist jedoch weder eine Datei (sondern höchstens ihr Name) noch ein FormData-Objekt. Zudem wirst du damit auch nicht ans Ziel kommen. Die sicherheitstechnischen Einschränkungen der FileAPI besagen, dass ein File-Objekt nicht aus einem Dateinamen erzeugt werden darf sondern immer nur über eine Benutzerhandlung.

                  dedlfix.

  2. Hallo Frankie

    suchst du soetwas? Ajax File Upload mit HTML5 und XHR2

    Gruss Jo

    1. Hallo zusammen und Vielen Dank

      ich Recherchierte und stoß auf eine Variante, so dass ich folgendes versuche:

      var client = new XMLHttpRequest();  
      var Datei = frames['DatenFrame'].document.getElementsByName("Datei")[0].getAttribute("Datei")  
      alert(Datei)  
         client.open("POST", "upload.php");  
         client.send(Datei);  
        
      
      
      <?php  
      if (isset($_FILES['datei']))  
      {  
           move_uploaded_file($_FILES['file']['Dateien'], '/pfad_zur_zieldatei/'.basename($_FILES['datei']['name']));  
      }  
      ?>  
      
      

      Doch ohne jeglichen Erfolg. Ich weis auch nicht wo die Datei jetzt landet. Und noch zur Info, dassich zZ noch mit server2go arbeite.

      Danke Gruß Frankie

  3. hi,

    Doch wie schaffe ich es denn per Submit diese Dateien hochladen zu können, da ich ja bisher nur finen konnte das es ja nur per php möglich sein soll?

    Du brauchst einen UserAgent. Wie wärs mit einem Perl-Script?

    Hotti

  4. Tach!

    Wäte eine tolle Sache die Dateien nicht immer neu auf der Festplatte suchen zu müssen und in ein Formular einzusetzen und dies auch noch für alle Dateien.

    Was du vorhast, darf nicht funktionieren. Wenn ein Browser anhand einer Liste oder einer sonstigen Quelle mit Dateinamen selbständig auf diese Dateien zugreifen dürfte, könnte er auch auf Dateien zugreifen, die man lieber nicht automatisch von einem Browser ins Web geschickt sehen möchte. Der Nutzer muss willentlich die Dateien aus seinem Dateisystem auswählen.

    dedlfix.

  5. Wäte eine tolle Sache die Dateien nicht immer neu auf der Festplatte suchen zu müssen und in ein Formular einzusetzen und dies auch noch für alle Dateien.

    Dann beachte das, was dedlfix Dir zweimal deutlich geschrieben hat: Ein Webbrowser ist ungeeignet, weil dieser vom Bediener eine Interaktion (just die Dateiauswahl) einfordern MUSS - sonst könnten nämlich beliebige (konkret mit den Rechten des Bedieners lesbare) Dateien von beliebigen Rechnern auf Server von Angreifern geladen werden. Das konterkariert jegliche Datensicherheit derart, dass es sich absolut verbietet und die Hersteller von Browsern derlei sorgfältigst zu verhindern suchen. Gäbe es eine Möglichkeit, dann wäre das ein schwerer, sicherheitsreleventer Bug und mit dem nächsten Update behoben.

    Lösung ohne Browser:

    Schreibe Dir in einer geeigneten Sprache geschriebenes Programm(1), welches vom Nutzer gestartet wird und die Date(ie)n auf den Server überträgt und/oder benutze geeignet Tools.

    Gehe ich von Windows aus, dann würde ich Dir dazu raten, wget zu installieren und durch ein cmd-Skript (.bat) zu steuern. Dessen Hilfe sagt:

    --post-file=file
               Use POST as the method for all HTTP requests and send the
               specified data in the request body.  --post-data sends string as
               data, whereas --post-file sends the contents of file.  Other than
               that, they work in exactly the same way. In particular, they both
               expect content of the form "key1=value1&key2=value2", with
               percent-encoding for special characters; the only difference is
               that one expects its content as a command-line parameter and the
               other accepts its content from a file. In particular, --post-file
               is not for transmitting files as form attachments: those must
               appear as "key=value" data (with appropriate percent-coding) just
               like everything else. Wget does not currently support
               "multipart/form-data" for transmitting POST data; only
               "application/x-www-form-urlencoded". Only one of --post-data and
               --post-file should be specified.

    Unter Linux oder auf einem Apple würde ich ein shell-Skript zum Steuern verwenden. Beide Möglichkeiten lassen sich unter Verwendung eines hübschen Icons auch als Eintrag in einem Startmenü oder auf dem Desktop verwenden.

    (1) geeignete Sprache

    • Du beherrschst diese
    • Compiler oder Interpreter sind für Dich und ggf. auf dem Rechner verfügbar
    • Diese enthält die Möglichkeit das zu tun, was Du vorhast.