Ankündigung

Einklappen
Keine Ankündigung bisher.

Downloaden progress bar...

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

  • Downloaden progress bar...

    hallo,
    ich habe eine super Beispiel Seite gefunden, passend für mein Projekt.
    https://coolcodings.wordpress.com/20...th-javascript/
    Leider habe ich schon mehrer Stunden in den Sand gesetzt, ohne Erfolg.
    Dem Entwickler habe ich geschieben,aber ich habe keine Antwort bekommen.
    Für eine Alternative bin ich immer offen


    Die Download.html
    PHP-Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    title>Untitled Document</title>

    <
    link rel="stylesheet" href="ext/jquery-ui-1.11.1/jquery-ui.min.css" />
    <
    link rel="stylesheet" href="ext/jquery-ui-1.11.1/jquery-ui.theme.min.css" />
    <
    link rel="stylesheet" href="ext/jquery-ui-1.11.1/themes/jquery-ui.theme.min_button_yes.css" />
    <
    link rel="stylesheet" href="ext/jquery-ui-1.11.1/themes/jquery-ui.theme.min_button_no.css" />
    <
    link rel="stylesheet" href="ext/jquery-ui-1.11.1/themes/jquery-ui.theme.min_progress_bar.css" />

    <
    script type="text/javascript" src="ext/jquery-2.1.1.min.js"></script>
    <script type="text/javascript" src="ext/jquery-ui-1.11.1/jquery-ui.min.js"></script>

    <script type="text/javascript" src="download.js"></script>

    </head>

    <body>


    <a href="javascript:showConfirmDialog('My File.zip', 12314)">My File.zip</a>


    <!--
    <div class="progress_bar">
    <div id="progressbar" style="height:2em">
    </div>
    </div>
    <div class="button_yes">
    <button>Click me</button>
    </div>

    <div class="button_no">
    <button>Cancel Me</button>
    </div>
    -->



    </body>
    </html> 
    die folgende Zeile habe ich so umbenannt:
    PHP-Code:


    <a href="javascript:showConfirmDialog('123.exe', 12314)">My File.zip</a
    Die Download Dateo ist in /home/chris/

    Die FileDownloader.php
    PHP-Code:
    <?php


    ignore_user_abort
    (true);
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    if(isset($_GET['cancel_download']) && !empty($_GET['cancel_download']))
    {
        
    session_start();
        
    $_SESSION['cancel_current_download'] = 1;    
        
    session_commit();

    }
    else if(isset(
    $_GET['track_download']) && !empty($_GET['track_download']))
    {  
        
    session_start();    
        if(isset(
    $_SESSION['down_status']))
        {
            
    $arrJson = array();
            
    $arrJson['down_status'] = $_SESSION['down_status'];
            
    $arrJson['current_file_size'] = $_SESSION['current_file_size'];
            
    $arrJson['current_file_downloaded_bytes'] = $_SESSION['current_file_downloaded_bytes'];



            echo 
    json_encode($arrJson);

            
    //downloaded status was aborted . once it sends set it to undefined
            
    if(isset($_SESSION['down_status']) && !empty($_SESSION['down_status']))
            {
                if(
    $_SESSION['down_status'] == 'aborted')
                {
                    
    $arrJson['down_status'] = $_SESSION['undefined'];
                }
            }
        }
        
    session_commit();

        die();
    }
    else if(isset(
    $_GET['download_id']) && !empty($_GET['download_id']))
    {


        
    //set the download file path or binary stream from the database here.
        //find it using given download_id

        
    $file = @fopen("SET YOUR DOWNLOADING FILE PATH HERE","rb");
        
    $fileSize filesize("SET YOUR DOWNLOADING FILE PATH HERE");
        
    $fileName "SET FILE NAME";


        
    //

        
    header('Content-Type: application/csv');
        
    header("Content-Disposition: attachment; filename=".$fileName);
        
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        
    header('Content-Length: '.$fileSize);

        
    set_time_limit(0);





        
    session_start();
        
    $_SESSION['down_status'] = 'downloading';
        
    $_SESSION['cancel_current_download'] = 0;

        
    clearstatcache();
        
    $_SESSION['current_file_size'] = $fileSize;
        
    session_commit();

        
    $downloadedBytes 0;
        while(!
    feof($file))
        {
                
    //sleep(1);



                
    echo fread($file1024*8);
                
    ob_flush();
                
    flush();    
                
    $downloadedBytes+= (1024 8);


                
    session_start();
                
    $_SESSION['current_file_downloaded_bytes'] = $downloadedBytes;

                if(isset(
    $_SESSION['cancel_current_download']) && $_SESSION['cancel_current_download'] == 1)
                {
                    
    $_SESSION['down_status'] = 'aborted';
                    exit();

                }else if(
    connection_aborted() && !feof($file))
                {
                    
    $_SESSION['down_status'] = 'aborted';
                    exit();
                }

                if(
    feof($file))
                {
                        
    $_SESSION['down_status'] = 'downloaded';
                }


                
    session_commit();
        }

        
    session_start();
        
    $_SESSION['down_status'] = 'downloaded';

        
    session_commit();





    }
    die folgende Zeilen habe ich so umbenannt:
    PHP-Code:
     $file = @fopen("/home/chris","rb");
        
    $fileSize filesize("/home/chris");
        
    $fileName "123.exe"

    Sobald ich auf download klicke kommt:
    Datei nicht gefunden


  • #2
    Wozu soll das denn gut sein?
    Der Browser lädt bei mir immer Dateien im Hintergrund herunter. Ich muss mich um nichts kümmern, er legt die Dateien im richtigen Ordner ab und wenn ich wissen will wie weit der Download fortgeschritten ist, kann ich das auch nachschauen, im Firefox wie im Chrome.

    Ich sehe in deiner Variante jetzt weder einen Nutzen noch einen Vorteil.

    Wenn du einen Link zu einem Downloadlink machen willst, hänge einfach das Attribut download dran.

    Kommentar


    • #3
      danke für deine Antwort, im Normalfall hast du recht. Der Hintergrund ist der, dass es sich um einen bezahl Link handelt. Komplett legal, sonst würde ich es nicht machen
      Es darf nur einmal heruntergeladen werden, aber das kommt später. Es könnte ja sein, dass der link in einem Forum landet. Ich brauche erstmal eine Progres Bar, das ist Prieo 1. Der Rest ist Kinderarbeit.

      Kommentar


      • #4
        brauche erstmal eine Progres Bar
        Seh ich nicht so, aber mach mal.

        Kommentar


        • #5
          Zitat von tomovic Beitrag anzeigen
          Der Hintergrund ist der, dass es sich um einen bezahl Link handelt. Komplett legal, sonst würde ich es nicht machen
          Es darf nur einmal heruntergeladen werden, aber das kommt später. Es könnte ja sein, dass der link in einem Forum landet.
          Das hat aber doch mit dem Download selbst gar nichts zu tun. Das musst du doch sofort beim Request prüfen.
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Mal zu deinem eigentlichen Problem

            Die Download Dateo ist in /home/chris/
            die folgende Zeilen habe ich so umbenannt:
            PHP-Code:
            $file = @fopen("/home/chris","rb");
            $fileSize filesize("/home/chris");
            $fileName "123.exe"
            Du musst den Dateinamen bei fopen schon angeben, nur ein Verzeichnis zu öffnen klappt nicht.
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Zitat von tomovic Beitrag anzeigen
              Es darf nur einmal heruntergeladen werden
              Was aber ein komplett anderes Thema ist und mit einem Progress Bar nichts zu tun hat.

              Also warum denkst du einen eigenen Progress Bar zu brauchen? Ist der vom Browser nicht gut genug?

              Kommentar


              • #8
                Zitat von hausl Beitrag anzeigen

                Das hat aber doch mit dem Download selbst gar nichts zu tun. Das musst du doch sofort beim Request prüfen.
                ok thx, kannst du mir mit request ein Beispiel machen oder wonach ich googlen soll.

                Kommentar


                • #9
                  Zitat von hausl Beitrag anzeigen

                  Das hat aber doch mit dem Download selbst gar nichts zu tun. Das musst du doch sofort beim Request prüfen.
                  thx,
                  bin deine Rat nachgegangen, ich hoffe wir reden nicht aneinander vorbei.
                  PHP-Code:
                    <?php  $filepath '/html/hans/123.exe';     $finfo finfo_open(FILEINFO_MIME_TYPE);  $mimeType finfo_file($finfo$filepath);     header('Content-type: '.$mimeType);  header('Content-Disposition: attachment; filename="'.basename($filepath).'"');     readfile($filepath);     unlink($filepath);     unlink(__FILE__);
                  Bei Firefox im Download ist zwar die Datei, aber mit 0 Byte

                  ---------------
                  Zitat von lstegelitz Beitrag anzeigen
                  Mal zu deinem eigentlichen Problem

                  Du musst den Dateinamen bei fopen schon angeben, nur ein Verzeichnis zu öffnen klappt nicht.
                  PHP-Code:

                  $file 
                  = @fopen("/html/hans/123.exe","rb");
                      
                  $fileSize filesize("/html/hans/123.exe");
                      
                  $fileName "123.exe"
                  gleiches Problem.

                  Kommentar


                  • #10
                    Und was steht im Error-Log?

                    Kommentar


                    • #11
                      nichts,
                      0 Byte gross

                      Kommentar


                      • #12
                        Zitat von tomovic Beitrag anzeigen
                        nichts,
                        0 Byte gross
                        Und wie sieht exakt der HTTP-Response aus?

                        Kommentar


                        • #13
                          hab ein plugin für Firefox installiert und 123.php aufgerufen.
                          PHP-Code:
                          $filepath '/htm/hans/123.exe';     
                          $finfo finfo_open(FILEINFO_MIME_TYPE);  
                          $mimeType finfo_file($finfo$filepath);    
                          header('Content-type: '.$mimeType);  
                          header('Content-Disposition: attachment; filename="'.basename($filepath).'"');     
                          readfile($filepath);     
                          //unlink($filepath);     
                          //unlink(__FILE__); 
                          Host: meine-Seiteblablalb.de
                          User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:63.0) Gecko/20100101 Firefox/63.0
                          Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
                          Accept-Language: de,en-US;q=0.7,en;q=0.3
                          Accept-Encoding: gzip, deflate, br
                          Connection: keep-alive
                          Cookie: cookieconsent_dismissed=yes
                          Upgrade-Insecure-Requests: 1
                          DNT: 1
                          ------
                          GET: HTTP/1.1 200 OK
                          Date Fri, 26 Oct 2018 08:31:57 GMI
                          Server Apache
                          Content-Disposition: attachment; filename="123.exe"
                          Scrict-Transport-Security: max-age=31556926
                          Content-Lenght: 0
                          Keep-Alive: timeout=5, max=100
                          Connection: Keep-Alive

                          Kommentar


                          • #14
                            1. Kann das Firefox auch ohne Plugin.

                            2. Passt das doch nicht zum Code. Wo ist im Response "Content-type" zu finden? Wo ist im Code "Content-Lenght" (das übrigens falsch geschrieben ist) zu finden? Also entweder zeigst du einen falschen Response oder den falschen Code.

                            Kommentar


                            • #15
                              1.wie, irgendwie stehe ich auf dem Schlauch.
                              2. Code heruntergeladen:
                              PHP-Code:
                              <?php
                              $filepath 
                              '/html/xxxx/chris/123.exe';

                              $finfo finfo_open(FILEINFO_MIME_TYPE);
                              $mimeType finfo_file($finfo$filepath);

                              header('Content-type: '.$mimeType);
                              header('Content-Disposition: attachment; filename="'.basename($filepath).'"');

                              readfile($filepath);

                              //unlink($filepath);

                              //unlink(__FILE__);
                              ?>
                              habs abgetippt, ich fand auf die schnelle nicht das save protokoll.
                              Hier das copy and paste:
                              HTML-Code:
                              http://xxxx.de/chris/123.php
                              Host: xxxx.de
                              User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:63.0) Gecko/20100101 Firefox/63.0
                              Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
                              Accept-Language: de,en-US;q=0.7,en;q=0.3
                              Accept-Encoding: gzip, deflate, br
                              Upgrade-Insecure-Requests: 1
                              Connection: keep-alive
                              Cookie: cookieconsent_dismissed=yes
                              DNT: 1
                              
                              GET: HTTP/1.1 200 OK
                              Date: Fri, 26 Oct 2018 10:22:35 GMT
                              Server: Apache
                              Content-Disposition: attachment; filename="123.exe"
                              Strict-Transport-Security: max-age=31556926
                              Content-Length: 0
                              Keep-Alive: timeout=5, max=100
                              Connection: Keep-Alive
                              ---------------------
                              https://xxxxxxx.de/chris/123.php
                              
                              

                              Kommentar

                              Lädt...
                              X