Mike© : File upload -Pfad des lokalen Verzeichnisses ermitteln

Moin @ All,

ich habe kein grundsätzliches Problem mit dem Upload. Funktioniert problemlos.

Wenn ich im Dialog "Durchsuchen" meine lokale Datei ausgewählt habe, dann steht im Input Text Feld so etwas: W:\twins-de\august2004\13.jpg

Nun möchte ich prüfen ob das Verzeichnis august2004 auf dem Zielserver existiert, und wenn nicht anlegen. Dazu müsste ich ja erst den String entsprechend zerlegen um das Verzeichnis august2004 zu extrahieren.

Leider gibt das Array $_Files den lokalen Pfad nicht her, bzw. nicht den ganzen String aus dem Input Feld :-(
Hat jemand eine Idee wie ich diesen Pfad ran komme?

Danke & regds

Mike©

--
Freunde kommen und gehen. Feinde sammeln sich an.
  1. Lieber Mike,

    Leider gibt das Array $_Files den lokalen Pfad nicht her, bzw. nicht den ganzen String aus dem Input Feld :-(
    Hat jemand eine Idee wie ich diesen Pfad ran komme?

    Der Browser darf solche lokalen Informationen nicht an das Internet preisgeben, weil das sonst eine Sicherheitslücke wäre.

    Über das <input type="file" /> kannst Du lediglich eine Datei, nicht aber ihren Pfad übermitteln lassen. Der Pfad ist zwar für den Browser wichtig, damit er auch die richtige Datei übermitteln kann, aber ansonsten ist der Pfad nicht verfügbar - schon garnicht für irgendwelche client-seitigen Scripte.

    Wie das mit Java aussieht, das weiß ich allerdings nicht, da ich mich damit nicht auskenne. Wenn aber Java als Applet im Browser ausgeführt wird, dann gilt wohl auch hier das oben Gesagte.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Moin Felix,

      Der Browser darf solche lokalen Informationen nicht an das Internet preisgeben, weil das sonst eine Sicherheitslücke wäre.

      das klingt leider plausibel :-(

      regds
      Mike©

      --
      Freunde kommen und gehen. Feinde sammeln sich an.
      1. Hi,

        Der Browser darf solche lokalen Informationen nicht an das Internet preisgeben, weil das sonst eine Sicherheitslücke wäre.

        das klingt leider plausibel :-(

        Du kannst das aber anders machen.
        Per JavaScript zerlegst du deinen Dateipfad Browserseitig und erzeugst ein Hiddenfield mit dem Pfad. Den hast du dann im POST request als seperater Wert.

        1. Lieber Martin,

          Per JavaScript zerlegst du deinen Dateipfad Browserseitig und erzeugst ein Hiddenfield mit dem Pfad. Den hast du dann im POST request als seperater Wert.

          Und wie genau machst Du sowas?

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.

          1. Moin Felix

            »» Lieber Martin,

            Lieber Martin ???

            Bist Du im richtigen Post *LOL*

            regds
            Mike©

            --
            Freunde kommen und gehen. Feinde sammeln sich an.
            1. Lieber Mike,

              Lieber Martin ???

              Bist Du im richtigen Post *LOL*

              ähmm... hihihihihi. Ja, aber nicht in der richtigen Anrede. Es sollte Manuel heißen - glaube ich. Namen sind wie... öhm, wie war das doch gleich?

              Liebe Grüße aus Ellwangen,

              Felix Riesterer.

              1. Moin Felix,

                ähmm... hihihihihi. Ja, aber nicht in der richtigen Anrede. Es sollte Manuel heißen - glaube ich. Namen sind wie... öhm, wie war das doch gleich?

                nicht ganz was du gemeint hast aber, es gibt auch den Spruch: "Sage mir wie du heißt und ich sage dir wer du bist" ;-)

                regds
                Mike©

                --
                Freunde kommen und gehen. Feinde sammeln sich an.
          2. Hi,

            Und wie genau machst Du sowas?

            Ich (obwohl ich nicht Martin heisse ;)) lese das Feld mit dem Dateinamen aus (per onChange, onKeydown, onFocus etc.), schneide den Dateinamen ab (im Normalfall also alles, was nach dem letzen / bzw. \ kommt) und schreib dann per document.write ein Hiddenfield mit dem Pfad als Value.

            Ich habs weder getestet noch nen Code geschrieben, dürfte aber nur ne Sache von 15 Minuten sein. (ohne Gewähr, weil ich nicht weis, wie verschiedene Browser auf document.write und hiddenfields reagieren)

            Alternativ schickst du einfach den Pfad inkl. Dateinamen mit (also das Value aus dem file-Feld) und nutzt diesen Wert dann gleich zum speichern. Spart Arbeit im Client.

            Und das mir keiner kommt von wegen "wenn aber eine Javascript deaktiviert hat ...."
            Wenn jemand eine besondere Funtionalität haben will, muss er akzeptieren, evtl. Javascript aktivieren zu müssen.

            1. Moin Manuel,

              Und das mir keiner kommt von wegen "wenn aber eine Javascript deaktiviert hat ...."
              Wenn jemand eine besondere Funtionalität haben will, muss er akzeptieren, evtl. Javascript aktivieren zu müssen.

              da es ja meine eigene Verwaltungspage ist, werde ich wohl kaum JS abschalten, wenn ich es benötige.

              Könntest Du ansatzweise das JS dazu posten, weil ich gar nix, null, nada JS.

              Danke & regds
              Mike©

              --
              Freunde kommen und gehen. Feinde sammeln sich an.
              1. Hi Mike,

                Könntest Du ansatzweise das JS dazu posten, weil ich gar nix, null, nada JS.

                https://forum.selfhtml.org/?t=110043&m=689167 <- Guckst du hier und teilst mir mit, obs dir was bringt ;)

                1. Moin,

                  https://forum.selfhtml.org/?t=110043&m=689167 <- Guckst du hier und teilst mir mit, obs dir was bringt ;)

                  Gug ich, dieser Tage, weil knapp an Zeit. Die Zwillings Terroristen nervern ;-)

                  regds
                  Mike©

                  --
                  Freunde kommen und gehen. Feinde sammeln sich an.
            2. Lieber MANUEL,

              Ich (obwohl ich nicht Martin heisse ;)) lese das Feld mit dem Dateinamen aus

              Sorry... ;-)

              (per onChange, onKeydown, onFocus etc.), schneide den Dateinamen ab (im Normalfall also alles, was nach dem letzen / bzw. \ kommt) und schreib dann per document.write ein Hiddenfield mit dem Pfad als Value.

              Muss das auch mal ausprobieren, was im <input type="file" id="dateiname" /> als document.getElementById("dateiname").value herauskommt.

              Ich habs weder getestet noch nen Code geschrieben, dürfte aber nur ne Sache von 15 Minuten sein. (ohne Gewähr, weil ich nicht weis, wie verschiedene Browser auf document.write und hiddenfields reagieren)

              Ich bin vielmehr gespannt, ob der Browser das überhaupt so vollständig preisgibt...

              Und das mir keiner kommt von wegen "wenn aber eine Javascript deaktiviert hat ...."

              Schon klar!

              Wenn jemand eine besondere Funtionalität haben will, muss er akzeptieren, evtl. Javascript aktivieren zu müssen.

              Exakt! Habe mir extra deshalb für meinen Adminbereich auf der Homepage zwei Versionen geschrieben: Eine komplett ohne JS nutzbare Version (umständlich!) und eine mit JS "verschönerte" Version (wesentlich bedienerfreundlich!). Es soll ja Browser geben, die mit getElementById() Probleme haben... ;-)

              Liebe Grüße aus Ellwangen,

              Felix Riesterer.

              1. Hi Felix,

                Exakt! Habe mir extra deshalb für meinen Adminbereich auf der Homepage zwei Versionen geschrieben: Eine komplett ohne JS nutzbare Version (umständlich!) und eine mit JS "verschönerte" Version (wesentlich bedienerfreundlich!). Es soll ja Browser geben, die mit getElementById() Probleme haben... ;-)

                Ich geh bei meinem aktuellen Projekt sogar noch weiter. Ich setze PHP5 und einen aktuelen Firefox, IE oder Opera vorraus (ich seh nicht ein, warum ich den dminbereich umschreiben soll, nur weil jemand nen alten Browser nimmt).

                Wer das nutzen will, muss eben die Systemvorraussetzungen erfüllen (wie bei jeder anderen Software auch). Was dem Besucher "vorgesetzt" wird, hängt dann auch nicht vom System ab, sondern vom Designer, der die Templates baut.
                Aber als Admin brauchst du eben eine gewisse Ausstattung ;)

                1. Lieber Manuel,

                  Ich geh bei meinem aktuellen Projekt sogar noch weiter. Ich setze PHP5 und einen aktuelen Firefox, IE oder Opera vorraus (ich seh nicht ein, warum ich den dminbereich umschreiben soll, nur weil jemand nen alten Browser nimmt).

                  Auf unserem Webspace läuft PHP 4.3.11, aber das reicht mir. Da ich von diversen Rechnern aus in den Admin-Bereich gelangen möchte, habe ich auch für alte (oder reine Text-)Browser eine non-JS-Version.

                  Aber als Admin brauchst du eben eine gewisse Ausstattung ;)

                  Das allerdings ist wahr!

                  Liebe Grüße aus Ellwangen,

                  Felix Riesterer.

          3. Hi,

            Und wie genau machst Du sowas?

            Ich hab mal schnell nen Code zusammengetippt. Funktioniert nur mit Win (wegen , / hab ich nicht integriert, solte aber kein Problem mehr darstellen)

              
            <html>  
            <head>  
            <script type="text/javascript">  
            function write_path(filename){  
             var pathname = "";  
             var folders = filename.split("\\");  
             for(var counter = 0; counter < folders.length - 1; counter++)  
              pathname = pathname + folders[counter] + "\\";  
              
             document.path.path.value = pathname;  
            }  
            </script>  
            </head>  
            <body>  
            <form name="path">  
            File: <input type="file" name="filename" onChange="write_path(this.value)" onFocus="write_path(this.value)" onKeyup="write_path(this.value)" size="100"><br />  
            Pfad: <input type="text" name="path" size="100">  
            </form>  
            </body>  
            </html>  
            
            

            Sollte als Denkanstoss reichen ;)

            1. Moin Manuel,

              <script type="text/javascript">
              function write_path(filename){
              var pathname = "";
              var folders = filename.split("\");
              for(var counter = 0; counter < folders.length - 1; counter++)
                pathname = pathname + folders[counter] + "\";

              document.path.path.value = pathname;
              }
              </script>

              Sollte als Denkanstoss reichen ;)

              geht leider nicht. Es meldet nur Skriptfehler.
              Zeichenkette nicht abgeschlossen, hier:
              var folders = filename.split("\");
              Bei Quelltext anzeigen im Browser steht dann:
              var folders = filename.split("");

              Wie gesagt, ich kann kein JS :-(

              regds
              Mike©

              --
              Freunde kommen und gehen. Feinde sammeln sich an.
        2. Moin Manuel,

          Du kannst das aber anders machen.
          Per JavaScript zerlegst du deinen Dateipfad Browserseitig und erzeugst ein Hiddenfield mit dem Pfad. Den hast du dann im POST request als seperater Wert.

          Hört sich gut an, ABER JS und ich. Zwei Welten prallen auf einander ;-) Mit anderen Worten, ich habe keine Ahnung (minimal) von JS

          Danke & regds
          Mike©

          --
          Freunde kommen und gehen. Feinde sammeln sich an.
  2. Moin @ All,

    nochmal zum Verständnis.

    Wenn ich innerhalb der Upload Form, den "Senden" Button klicke, dann wird die Datei bereits übertragen?

    Ich prüfe nämlich mittels:

    if (isset ($_POST['load']) )
       {
    $Filename=$_FILES['bild']['name'];
    .....

    auf einige mögliche Fehler ab. Sollten Fehler auftreten, so ist doch die Datei schon in's /tmp des Zielservers übertragen. Richtig?

    Wenn dem so ist, dann würde bei großen Dateien die Fehlermeldung auf sich warten lassen.

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. echo $begrüßung;

      Richtig?

      Ja. Die Datei ist wie alle anderen Eingabefeldwerte auch Bestandteil des Requests.

      echo "$verabschiedung $name";

      1. Moin dedlfix

        Ja. Die Datei ist wie alle anderen Eingabefeldwerte auch Bestandteil des Requests.

        Danke. Diese Funktion gefällt mir immer weniger :-(

        regds
        Mike©

        --
        Freunde kommen und gehen. Feinde sammeln sich an.