eigner Download lädt nur 1,9 MB

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

  • eigner Download lädt nur 1,9 MB

    Hallo,

    ich habe eine Frage. Auf der Homepage der Band meines Mannes wollte ich die Songs zum Downloaden anbieten. Damit man nicht mit rechter Maustaste und „Ziel speichern unter“ die Stücke runterladen muss, habe ich einen eigenen Download mit php geschrieben. Es funktioniert auch alles, nur das Problem ist, dass immer nur 1,9 MB heruntergeladen werden, egal wir groß die Stücke sind. Entweder lässt mein selbstgeschriebenes Programm nur 1,9 MB zu oder es gibt ein Zeitlimit, nachdem der Download gestoppt wird. Kann mir jemand helfen oder hat jemand eine andere Idee, wie ich dieses „Öffnen – Speichern – Fenster“ sonst noch bekommen kann. Ich möchte die Files aber nicht zippen. Ich habe dies bislang nur lokal probiert, also nicht ins Web gestellt. Am Provider kann es demnach nicht liegen.

  • #2
    Re: eigner Download lädt nur 1,9 MB

    Original geschrieben von sternhagel
    Damit man nicht mit rechter Maustaste und „Ziel speichern unter“ die Stücke runterladen muss, habe ich einen eigenen Download mit php geschrieben.
    du hast WAS?

    Es funktioniert auch alles
    was funktioniert? Oo,

    Entweder lässt mein selbstgeschriebenes Programm nur 1,9 MB zu oder es gibt ein Zeitlimit, nachdem der Download gestoppt wird.
    Was jetzt php oder Programm?
    Code?

    Kann mir jemand helfen oder hat jemand eine andere Idee, wie ich dieses „Öffnen – Speichern – Fenster“ sonst noch bekommen kann.
    Die Files einfach in den webspace werfen und dem User sagen "Rechte Maustaste und dann Ziel speichern unter", vielleicht gibt es auch eine Direktive, die automatisch das Ding öffnet, guck ich gleich mal (sofern du mir das Problem erläutert hast ... ich suche nicht gerne um rauszufinden, dass die Lösung uninteressant ist)

    Ich habe dies bislang nur lokal probiert, also nicht ins Web gestellt. Am Provider kann es demnach nicht liegen.
    in dem Falle bist du dein eigener "Provider", es kann also auch an deinen Einstellungen in Richtung Webserver liegen

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Also ich habe einen Button eingefügt, wenn man da draufklickt, startet mein php-Programm und man bekommt dieses "Öffnen oder Speichern" Fenster. Er erkennt das File auch als mp3-File mit richtiger Größe und startet den Download. Wenn der Download beendet ist, hat er aber nur 1,9 MB abgespeichert.
      Wenn Du einen Auszug aus meinem php-script brauchst, kann ich es einstellen.

      Kommentar


      • #4
        Original geschrieben von sternhagel
        Wenn Du einen Auszug aus meinem php-script brauchst, kann ich es einstellen.
        das wäre prickelnd ^^
        (das gesamte Skript)

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Mit ziemlich hoher wahrscheinlichkeit dürfte es an max_execution_time liegen.

          schon mal mit phpinfo(); nachgeschaut?

          EDIT:
          Wenn das Ding bis jetzt local bei dir läuft, sollte max_execution_time auch kein Problem darstellen, da die Datei in Bruchteilen einer Sekunde geladen sein sollte

          jetzt wär doch mal etwas Code interessant.
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            Das sit das Script. Ich hoffe, es ist nicht zu lang:
            <html>
            <head>
            <title>download</title>
            </head>
            <body>

            <?php

            //Downloadscript
            //application=octet-stream

            define("ALLOW_INCLUDE", true);
            include "downloads/downloads.php";

            define("ALLOW_TITEL", true);
            include "downloads/titel.php";

            $mimetype = "application/octetstream";

            // Browsererkennung
            if (!empty($_SERVER['HTTP_USER_AGENT'])) $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT'];
            else if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) $HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
            else if (!isset($HTTP_USER_AGENT)) $HTTP_USER_AGENT = '';

            if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) $browser_agent = 'opera';
            else if (ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) $browser_agent = 'ie';
            else $browser_agent = 'other';

            // Mime-Type-Anpassung (Für IE und Opera)
            if ( ($mimetype == 'application/octet-stream') || ($mimetype == 'application/octetstream')|| ($mimetype == 'image') )
            {
            if ( ($browser_agent == 'ie') || ($browser_agent == 'opera') ) $mimetype = 'application/octetstream';
            else $mimetype = 'application/octet-stream';
            }

            //Übergebene ID überprüfen
            if (isset($_GET['id']) && preg_match("/[1234567890]+/", $_GET['id'])) {
            if (isset($downloads[$_GET['id']])) {
            $filename = substr($downloads[$_GET['id']],
            strrpos($downloads[$_GET['id']], "/"));
            $filesize = @filesize($downloads[$_GET['id']]);

            //Counter
            //downloads/counter braucht CHMod 777
            if (!file_exists("downloads/$_GET[id].txt")) {
            $fp = fopen("downloads/$_GET[id].txt", "w");
            fwrite($fp, "0");
            fclose($fp);
            }
            $fp = fopen("downloads/$_GET[id].txt", "r+");
            $counter = fread($fp, 255);
            $counter++;
            rewind($fp);
            fwrite($fp, $counter);
            fclose($fp);
            $name=$titel[$_GET['id']];
            // Compression AUS
            @ob_end_clean();
            @ini_set('zlib.output_compression', 'Off');

            //Headerinformationen senden
            header('Pragma: public');
            header('Content-Transfer-Encoding: none');
            header("Content-type: $mimetype");
            if ($browser_agent == 'ie')
            header('Content-Disposition: inline; filename="' . $name . '"');
            else
            header('Content-Disposition: attachment; filename=$name');

            //header("Content-Disposition: inline; filename=$name");
            //header("Content-Disposition: attachment; filename=$name");

            $size = @filesize($downloads[$_GET['id']]);
            if ($size > 0) header('Content-length: '.$size);else header('Content-length: '.@strlen(@file_get_contents($downloads[$_GET['id']])));
            readfile($downloads[$_GET['id']]);



            //if ($filesize) header("Content-Length: $filesize");

            //Datei laden
            //readfile($downloads[$_GET['id']]);
            }
            else echo "Die gewünschte ID existiert nicht.";
            }
            else echo "Die gewünschte ID existiert nicht.";

            ?>

            </body>
            </html>

            Kommentar


            • #7
              Setz es bitte in PHP-Tags, damit man es leichter lesen kann.
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                Original geschrieben von Quetschi
                Setz es bitte in PHP-Tags, damit man es leichter lesen kann.
                Werde ich versuchen. Aber ich bin ein ziemlicher php-Laie. Kann also etwas dauern.

                Kommentar


                • #9
                  Original geschrieben von sternhagel
                  Aber ich bin ein ziemlicher php-Laie. Kann also etwas dauern.

                  einfach nur [php]vor den Source setzen und am Ende mit einem Slash drin [ /php] (ohne Leerzeichen)
                  ...ist doch nur für's Forum

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10

                    So besser?

                    PHP-Code:
                    <html>
                    <head>
                    <title>download</title>
                    </head>
                    <body>

                    <?php

                    //Downloadscript
                    //application=octet-stream

                    define("ALLOW_INCLUDE"true);
                    include 
                    "downloads/downloads.php";

                    define("ALLOW_TITEL"true);
                    include 
                    "downloads/titel.php";

                    $mimetype "application/octetstream";

                    // Browsererkennung
                          
                    if (!empty($_SERVER['HTTP_USER_AGENT']))                
                        
                    $HTTP_USER_AGENT $_SERVER['HTTP_USER_AGENT'];
                          else if (!empty(
                    $HTTP_SERVER_VARS['HTTP_USER_AGENT']))  
                        
                    $HTTP_USER_AGENT $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
                          else if (!isset(
                    $HTTP_USER_AGENT))                      
                        
                    $HTTP_USER_AGENT '';

                          if (
                    ereg('Opera(/| )([0-9].[0-9]{1,2})'$HTTP_USER_AGENT$log_version))
                          
                    $browser_agent 'opera';
                           else if (
                    ereg('MSIE ([0-9].[0-9]{1,2})'$HTTP_USER_AGENT$log_version))
                          
                    $browser_agent 'ie';
                          else  
                    $browser_agent 'other';

                    // Mime-Type-Anpassung (Für IE und Opera)
                          
                    if ( ($mimetype == 'application/octet-stream')
                         || (
                    $mimetype == 'application/octetstream')
                         || (
                    $mimetype == 'image') )
                          {
                                if ( (
                    $browser_agent == 'ie') || ($browser_agent == 'opera') )
                                    
                    $mimetype 'application/octetstream';
                                else    
                    $mimetype 'application/octet-stream';
                          }

                    //Übergebene ID überprüfen 
                    if (isset($_GET['id']) && preg_match("/[1234567890]+/"$_GET['id'])) {
                        if (isset(
                    $downloads[$_GET['id']])) {
                           
                    $filename substr($downloads[$_GET['id']], 
                                               
                    strrpos($downloads[$_GET['id']], "/"));
                            
                    $filesize = @filesize($downloads[$_GET['id']]);
                            
                            
                    //Counter
                            //downloads/counter braucht CHMod 777
                            
                    if (!file_exists("downloads/$_GET[id].txt")) {
                                
                    $fp fopen("downloads/$_GET[id].txt""w");
                                
                    fwrite($fp"0");
                                
                    fclose($fp);
                            }
                            
                    $fp fopen("downloads/$_GET[id].txt""r+");
                            
                    $counter fread($fp255);
                            
                    $counter++;
                            
                    rewind($fp);
                            
                    fwrite($fp$counter);
                            
                    fclose($fp);
                            
                    $name=$titel[$_GET['id']];
                            
                    // Compression AUS
                               
                    @ob_end_clean();
                               @
                    ini_set('zlib.output_compression''Off');

                            
                    //Headerinformationen senden
                            
                    header('Pragma: public');
                            
                    header('Content-Transfer-Encoding: none');
                            
                    header("Content-type: $mimetype");
                            if (
                    $browser_agent == 'ie')
                               
                    header('Content-Disposition: inline; filename="' $name '"');
                            else   
                               
                    header('Content-Disposition: attachment; filename=$name');

                            
                    //header("Content-Disposition: inline; filename=$name");
                            //header("Content-Disposition: attachment; filename=$name");

                            
                    $size = @filesize($downloads[$_GET['id']]);
                            if (
                    $size 0header('Content-length: '.$size);
                        else 
                    header('Content-length: '.@strlen(@file_get_contents($downloads[$_GET['id']])));
                            
                    readfile($downloads[$_GET['id']]);



                            
                    //if ($filesize) header("Content-Length: $filesize");

                            //Datei laden
                            //readfile($downloads[$_GET['id']]);
                        
                    }
                        else echo 
                    "Die gewünschte ID existiert nicht.";
                    }
                    else echo 
                    "Die gewünschte ID existiert nicht.";

                    ?>

                    </body>
                    </html>
                    Zuletzt geändert von sternhagel; 21.04.2006, 16:34.

                    Kommentar


                    • #11
                      1. Man kann alte Beiträge auch editieren (ist jetzt zu spät)
                      2. lange Zeilen umbrechen, sodass auf einer Auflösung von 1024x768 Pixeln kein horizontaler Scrollbalken erscheint

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        vielleicht geht es auch einfacher über den apache ... ich weiß nur nicht in wiefern der mime-type interessant ist, vielleicht hat da jemand mehr Ahnung?
                        Code:
                        <FilesMatch "\.mp3$">
                          Header set Content-Type "application/octet-stream"
                          Header set Content-Transfer-Encoding "binary"
                        </FilesMatch>
                        Einfach als .htaccess im Ordner mit der Musik speichern und das sendet für alle .mp3-Dateien automatisch die beiden Header (denke ich, hab es nicht ausprobiert sondern mit der Manual zusammengeschustert ^^)

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Original geschrieben von ghostgambler
                          vielleicht geht es auch einfacher über den apache ... ich weiß nur nicht in wiefern der mime-type interessant ist, vielleicht hat da jemand mehr Ahnung?
                          Code:
                          <FilesMatch "\.mp3$">
                            Header set Content-Type "application/octet-stream"
                            Header set Content-Transfer-Encoding "binary"
                          </FilesMatch>
                          Einfach als .htaccess im Ordner mit der Musik speichern und das sendet für alle .mp3-Dateien automatisch die beiden Header (denke ich, hab es nicht ausprobiert sondern mit der Manual zusammengeschustert ^^)
                          Danke, das werde ich mal ausprobieren.

                          Kommentar


                          • #14
                            Habe ich ausprobiert, aber es nützt leider nichts. Er lädt trotzdem nur 1,9 MB.
                            Ich werde es jetzt mal mit max_execution_time probieren. Vielleicht liegt da ja das Problem.

                            Kommentar


                            • #15
                              Ein solches Problem hatte ich mal mit einem 180 Mb Download. Die folgende Usernote im PHP Manual hat mir dann geholfen das Prob zu lösen.
                              Vielleicht hilft's auch Dir
                              http://us2.php.net/manual/de/functio...file.php#54295

                              Gruss

                              tobi
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X