Ankündigung

Einklappen
Keine Ankündigung bisher.

Files in dir listen und save as per klick?

Einklappen

Neue Werbung 2019

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

  • Files in dir listen und save as per klick?

    Hallo!

    Hab erst vor kurzem erkannt wie mächtig und praktisch php ist!
    Verwende es nun mehr und mehr um meine Seite besser zu machen.

    Möchte nun gern einen Download Bereich auf meiner Seite einrichten, aber ich möchte keines von diesen fertigen aufgeblasen Skripts verwenden.

    PHP-Code:
    <?php
    $dirname 
    ".";
    $dir opendir($dirname);
    ?>
    PHP-Code:
    <?php
    while(false != ($file readdir($dir)))
    {
    if((
    $file != ".") and ($file != ".."))
    {
    echo(
    "<a href='$dirname$file'>$file</a> <br />");
    }
    }
    ?>
    Hab es mit diesem Code geschafft die Dateien als Links anzuzeigen.

    Jetzt möchte ich aber dass die Datei direkt durch einen Klick gespeichert wird. (Also der save as dialog geöffnet wird)

    Wie stelle ich das anhand des obigen Beispiels an?

    Muss ich mir bei diesem Code über die Sicherheit Gedanken machen?

    Vielen Dank und frohe Ostern aus Kanada!

    Gombi


  • #2
    Hi.

    Hier gibt es ein gut erklärtes Beispiel:

    Dateidownload realisieren

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      PHP-Code:
      <?php
      while(false != ($file readdir($dir)))
      {
      if((
      $file != ".") and ($file != ".."))
      {
      echo 
      '<a href="'.$dirname.'/'.$file.'" onclick="javascript: document.execCommand(\'SaveAs\',\'1\',null);">'.$file.'</a> <br />';
      }
      }
      ?>
      apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

      Kommentar


      • #4
        @BlackScorp: Funktioniert so ja aber auch nur, wenn JavaScript aktiviert ist!

        wolf29
        while (!asleep()) sheep++;

        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

        Kommentar


        • #5
          Zitat von wolf29 Beitrag anzeigen
          @BlackScorp: Funktioniert so ja aber auch nur, wenn JavaScript aktiviert ist!

          wolf29
          ist klar aber ich ignoriere die leute, die kein JS aktiviert haben, genauso wie IE6/7 benutzer, die Meisten haben aber JS und öffters FF und die masse zählt
          apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

          Kommentar


          • #6
            ...man kann sich natürlich auch einiges schön reden

            Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              ist eine tatsache, habe meine homepage seit ca 3 wochen mit statistik laufen und folgendes ergebnis:

              1 Firefox 188 70,41%
              2 Internet Explorer 34 12,73%
              3 Safari 24 8,99%
              4 Opera 11 4,12%
              5 unbekannt 9 3,37%
              6 T-Online-Browser 1 0,37%


              JavaScript aktiviert: 93.26%


              wie gesagt , die restlichen 7% interesieren mich nicht genauso wie die 12% der IE benutzer. wobei von den 12% IE benutzern folgende statistik für die version aufkam:

              1 8.0 15 44,12%
              2 7.0 13 38,24%
              3 6.0 5 14,71%
              4 5.5 1 2,94%

              6 leute hatten IE6 und schlechter, kann man einfach ignorieren

              siehste ist doch nicht einfach nur schönreden
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

              Kommentar


              • #8
                Hehe...ich sehe das "globaler". Viele der User hier haben Websites zum Thema Programmieren o.ä.! Gerade da haben die meisten Firefox als Browser.

                Bei mir in der Firma bin ich übrigens der einzige der Firefox verwendet - der Rest schwört auf IE 6x!

                Ich denke immer, dass gerade die Leute, die z.B. den IE benutzen (zu mindestens aus meinem Bekanntenkreis) nicht so die Affinität zum Web allgemein haben. Da will ich Ihnen die Bedienbarkeit zu mindestens erleichtern und gewährleisten, dass es "immer" funktioniert! Mit JavaScript wirste sicherlich recht haben, dass das die meisten aktiviert haben - sollte ja auch nur ne kleine Anmerkung am Rande sein!

                Wolf29
                while (!asleep()) sheep++;

                Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                Kommentar


                • #9
                  In dem Fall ist es ja kein Problem wenn man JS deaktiviert.

                  Rechtsklick, speichern unter ... fertig.

                  Die JS-Lösung ist hier ja eh nur für faule.

                  Kommentar


                  • #10
                    Danke für eure Antworten!

                    Was noch besser wäre ist eine Auswahlliste mit einem download button.
                    Mit Liste meine ich etwa so was: Auswahllisten definieren

                    Dann müsste das doch auch ohne java script funktionieren, und es würde eleganter aussehen.

                    Kann mich bitte jemand in die richtige Richtung schicken!

                    Danke!
                    LG

                    gombi

                    Kommentar


                    • #11
                      Du nimmst di Liste, packst diese in ein Formular, dann wertest du das ergebnis aus und sendest die header zum downloaden
                      http://www.php-faq.de/q-datei-download.html

                      PHP-Code:
                      if(isset($_POST)){
                         
                      $dateien = Array('dl1.exe','test.html'); //Damit nix runtergeladen werden kann, was du nicht willst
                         
                      $datei $dateien[$_POST['dl']];
                         
                      //Header senden für DL (google)
                      }else{
                        <
                      form action="" method="post">
                           <
                      select name="dl">
                              <
                      option value="0">Dl 1</option>
                            </
                      select>
                            <
                      input type="submit" name="submit" value="Download"/>
                        </
                      form>

                      Mfg

                      Kommentar


                      • #12
                        Zitat von BlackScorp Beitrag anzeigen
                        ist klar aber ich ignoriere die leute, die kein JS aktiviert haben, genauso wie IE6/7 benutzer, die Meisten haben aber JS und öffters FF und die masse zählt
                        Sehr barrierefrei ... ... ich bin immer wieder froh das ich nicht auf einen Screenreader angewiesen bin.

                        Kommentar


                        • #13
                          @MasterD

                          Danke, hört sich gut an. Werd da mal herumbasteln, denn ich will das ein bestimmtes
                          Verzeichnis ausgelesen wird das nicht statisch ist. Es werden ja auch files herauf geladen.

                          Kommentar


                          • #14
                            Zitat von haemoglobin Beitrag anzeigen
                            Sehr barrierefrei ... ... ich bin immer wieder froh das ich nicht auf einen Screenreader angewiesen bin.
                            was hat denn das mit Barrierefreiheit zutun? Meinste ein Screenreader kann kein inhalt ansagen der in einem link steht? es spielt keine rolle wenn ich auf eine datei verlinke oder mit javascript ein opensavedialog öffne.. also mal ehrlich.. wenn man auf wirklich ALLE leute eine homepage zuschneiden will, dann frickelt man nur rum und es gefällt nur ein paar leuten. so frickelt man wenig rum, hat man schnell ein ergebnis und die "Normalen" benutzer (also die mehrheit) ist zu frieden.. doch das ist alles Offtopic ich habe ledeglich einen vorschlag gemacht wie man es machen könnte, im endeffekt ist es jedem selbst überlassen wie er es machen würde.
                            apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                            Kommentar


                            • #15
                              Ok! Ich bin zu blöd und bitte um Hilfe!

                              Ich hab das mit dem listen von Dateien verstanden und ich kann diese als link oder als text listen. Ich schaffe es aber nicht die Dateien in eine Auswahlliste mit einem download button zu packen. Nach 2h googeln und probieren , möchte ich bitte nochmal die Experten zu Rate ziehen.

                              So lese ich das Verzeichnis aus:
                              PHP-Code:
                              $dirname ".";
                              $dir opendir($dirname); 
                              PHP-Code:
                              while(false != ($file readdir($dir)))
                              {
                              if((
                              $file != ".") and ($file != ".."))
                              {
                              echo(
                              "$file <br />");
                              }
                              }
                              closedir($dir); 
                              Danke für eure Hilfe!

                              Kommentar

                              Lädt...
                              X