readfile()

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

  • readfile()

    hi..

    kann man mittels php prüfen, ( oder java? ) ob ein download vollständig runtergeladen wurde? also ich finde keine lösung

    verwenden/starten tu ich den download so:

    PHP-Code:

    machwastuwasa
    ..blah..blah.. später:

     if ( 
    $kosten <= barometer($id_id) ) {


            
    ## Typ ermitteln

              
    $typ explode('.',$datei);
               
    $dateityp $typ[COUNT($typ)-1];



    $application=$dateityp// Dateiendung
    $dateiname=$typ[0]; // Ohne . und ohne Dateiendung

    header("Content-type: application/$application");
    header("Content-Disposition: attachment; filename=".$dateiname.".".$application."");

    readfile($trocken.$dateiname.".".$application);

          } 

    laut durchfrosten des forums, anscheinend nicht so einfach?
    Zuletzt geändert von xManUx; 17.08.2004, 05:50.

    Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
    sondern mit den Augen das Manual zu lesen.

  • #2
    mit php auf keinen fall

    mit java sollte es gehen, gibt ja genug dubiose stellen im netz die damit arbeiten...
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Re: readfile()

      kann man mittels php prüfen, ( oder java? ) ob ein download vollständig runtergeladen wurde? also ich finde keine lösung
      Alles was Du brauchst ist der Status der Verbindung.
      Falls der 'Abgebrochen' ist, weißt Du das der Download nicht erfolgreich war,
      und kannst z. B. mittels einer Shutdown-Funktion entsprechende Schritte einleiten.
      http://de3.php.net/manual/de/functio...on-aborted.php
      http://de3.php.net/manual/de/functio...n-function.php

      Hans Kuhlen

      Kommentar


      • #4
        Original geschrieben von mrhappiness
        mit php auf keinen fall

        mit java sollte es gehen, gibt ja genug dubiose stellen im netz die damit arbeiten...
        hast vielleicht mal schnell spontan ne URL im kopf?

        Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
        sondern mit den Augen das Manual zu lesen.

        Kommentar


        • #5
          Re: Re: readfile()

          Original geschrieben von fiderallalla
          Alles was Du brauchst ist der Status der Verbindung.
          Falls der 'Abgebrochen' ist, weißt Du das der Download nicht erfolgreich war,
          und kannst z. B. mittels einer Shutdown-Funktion entsprechende Schritte einleiten.
          http://de3.php.net/manual/de/functio...on-aborted.php
          http://de3.php.net/manual/de/functio...n-function.php

          Hans Kuhlen
          thx.. mh.. also müsste der download zwischen der connection-aborted funktion gestartet werden? aber bricht er da bei readfile() das script nicht ab?

          Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
          sondern mit den Augen das Manual zu lesen.

          Kommentar


          • #6
            wenn dann:
            PHP-Code:
            readfile();
            if (
            connection_aborted())
              
            register_shutdown_function(); 
            probier es mal aus, wenn's geht ist dein problem ja gelöst
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Re: Re: readfile()

              Original geschrieben von fiderallalla
              Alles was Du brauchst ist der Status der Verbindung.
              Falls der 'Abgebrochen' ist, weißt Du das der Download nicht erfolgreich war,
              und kannst z. B. mittels einer Shutdown-Funktion entsprechende Schritte einleiten.
              http://de3.php.net/manual/de/functio...on-aborted.php
              http://de3.php.net/manual/de/functio...n-function.php
              Funktioniert das bei allen Ausgaben, also auch bei abgebrochenen Downloads? Wenn ja, ist das ja eine richtig nette Geschichte - kannte ich noch gar nicht.
              Ich denke, also bin ich.
              Manche sind trotzdem!

              Kommentar


              • #8
                Re: Re: Re: readfile()

                Funktioniert das bei allen Ausgaben, also auch bei abgebrochenen Downloads?
                Es funktioniert bei allen Scripten, also auch wenn nichts ausgegeben wird.

                *Nachdenk* Durch Verwendung eines eigenen Ausgabepuffers
                müsste man eigentlich auch herausfinden können wieviel übertragen worden ist.
                http://de2.php.net/manual/de/ref.outcontrol.php


                Hans Kuhlen

                Kommentar


                • #9
                  PHP-Code:

                  function closescript() {

                     echo 
                  "DL-OK";
                     
                     }


                  #........


                  readfile($trocken.$dateiname.".".$application);

                  if (
                  connection_aborted())
                    
                  register_shutdown_function('closescript'); 
                  hab ich jetzt den grundsatz verwirkt, oder fehlen da noch entsprechende dinge? fehler meldung bringt er keine, downloaden tut er auch, bloß die funktion wird nicht in betracht gezogen am ende.. weder noch

                  Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                  sondern mit den Augen das Manual zu lesen.

                  Kommentar


                  • #10
                    aus dem handbuch
                    The registered shutdown functions are called after the request has been completed (including sending any output buffers), so it is not possible to send output to the browser using echo() or print(), or retrieve the contents of any output buffers using ob_get_contents().
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      PHP-Code:
                      if (connection_aborted())
                        
                      register_shutdown_function('closescript'); 
                      Anders herum:

                      PHP-Code:
                      function closescript() {
                          if ( 
                      connection_aborted() ) {
                              ...
                          }
                      }
                      register_shutdown_function('closescript');
                      readfile($trocken.$dateiname.".".$application); 

                      Kommentar


                      • #12
                        Original geschrieben von mrhappiness
                        aus dem handbuch

                        ok. gegen einem header("location: blah.php"); ist eigentlich nichts auszusetzen? ist auch reaktionslos..

                        Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                        sondern mit den Augen das Manual zu lesen.

                        Kommentar


                        • #13
                          du hast doch schon nen header gesendet und auch daten (mit readfile)

                          und wäre es nicht die shutdown-funktion würdest du auch ne fehlermeldung bekommen "Header already sent..."
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            Original geschrieben von fiderallalla
                            Anders herum:

                            PHP-Code:
                            function closescript() {
                                if ( 
                            connection_aborted() ) {
                                    ...
                                }
                            }
                            register_shutdown_function('closescript');
                            readfile($trocken.$dateiname.".".$application); 
                            ok das klingt logischer.. sorry

                            aber das hats jetzt auch nicht wirklich zum erfolg geführt.

                            PHP-Code:
                            function closescript() {

                               if (
                            connection_aborted()) {

                                  
                            header("location: ".INCLUDE_DIR."mymax3d/message/close.php");exit;

                                  }
                               
                               }

                            ##... 

                                  
                            if ( $kosten <= barometer($id_id) ) {


                                    
                            ## Typ ermitteln

                                      
                            $typ explode('.',$datei);
                                       
                            $dateityp $typ[COUNT($typ)-1];



                            $application=$dateityp// Dateiendung
                            $dateiname=$typ[0]; // Ohne . und ohne Dateiendung



                            register_shutdown_function('closescript');
                             
                            header("Content-type: application/$application");
                              
                            header("Content-Disposition: attachment; filename=".$dateiname.".".$application."");
                               
                            readfile($trocken.$dateiname.".".$application);


                                  }
                                  
                                  

                            ?> 
                            ob es pop up ist, ist ja wurscht oder?

                            ich hab es so, dass man via link auf "download" starten drücken kann ( via link ) und darauf hin öffnet sich das pop up, berechnet user-coints etc.

                            und via <form></form> kann man den download bestätigen.. und darauf hin wird es zur dieser URL geleitet mit dem entsprechenden wichtigen daten. aber was ich hier schon ?komisch? finde ist, dass er immer noch die seite mit dem bestätigungsbutton anzeigt, müsste da danach nicht die blankoseite erscheinen, da sie ja keine ausgaben bringt an den browser! ?

                            Es kommt nicht darauf an, mit dem Kopf durch den Monitor zu rennen,
                            sondern mit den Augen das Manual zu lesen.

                            Kommentar


                            • #15
                              ist eigentlich nichts auszusetzen? ist auch reaktionslos..
                              header() müssen gesetzt werden bevor etwas anderes an den Browser gesendet wird.
                              http://de3.php.net/header

                              Du bekommst keine Fehlermeldung für die header() Anweisung, da die shutdown-Funktion aufgerufen
                              wird wenn alles abgearbeitet worden ist - das Script also zu Ende (terminiert) ist.

                              Du mußt also anders an die Sache herangehen.

                              Teile die Scripte auf:
                              - ein Script für Dateioperationen und Download.
                              Am Ende läßt Du den Status des Downloads irgendwo registrieren.
                              - in einem anderen Script (Dein Hauptscript?) läßt du den registrierten Status auswerten.

                              Hans Kuhlen

                              Kommentar

                              Lädt...
                              X