zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden größere Datein zum Download anbieten (PHP)

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 22.11.2009, 19:42
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard größere Datein zum Download anbieten (PHP)

Hallo zusammen,

ich häng gerade an einem kleinen Problem. Ich wollte ein paar Datein zum Download bereit stellen, die mit einem kurzen Passwort "geschützt" sind.

Der wichitge Teil:
PHP-Code:
switch ($_GET['f']) {
            
            case 
'1'$file['name'] = 'file_1.zip';
                        
$file['mime'] = 'application/zip';
                break;
            case 
'2'$file['name'] = 'file_2.avi';
                        
$file['mime'] = 'video/avi';
                break;
            case 
'3'$file['name'] = 'file_3.wmv';
                        
$file['mime'] = 'video/X-ms-wmv';
                break;

                
            default: 
$file['name'] = false;
                break;
                
            case 
'logout':    
                
$_SESSION['loggedin'] = false;
                
session_destroy();
                exit(
'Danke für Deinen Besuch!');
}

/* ... */

$file['size'] = filesize(FILE_PATH.$file['name']);
header('Content-Type: '.$file['mime']);
header('Content-Disposition: attachment; filename="'.$file['name'].'"');
header('Content-Length: '.$file['size']);
    
readfile(FILE_PATH.$file['name']);
exit(); 
Soweit funktioniert das auch. Der Browser öffnet den Download-Dialog, und der Download startet. Allerdings ist der Download nach nicht mal einer Sekunde beendet, die heruntergeladene Datei hat eine Größe von 200kB. Die Originale liegen so bei 60 - 90 MB.

Woran kann das liegen, dass der Download dann so schnell abbricht? Sind das beschränkungen vom Provider?

Gruß
David
__________________
http://dnaber.de

Geändert von David (22.11.2009 um 20:01 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 23.11.2009, 11:48
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Sowas solltest du nicht mit einem simplen readfile() machen, das zieht die ganze Serverperformance runter, weil der Server versucht die Datei "in einem Stück" zu übergeben.

Nimm das:
PHP-Code:
function sendFileToBrowser($filelocation NULL$filename NULL$org_filename ''$ctype 'application/octet-stream'$download FALSE){
/*
    =============================================================================
    @desc:        Sendet eine Datei zum Herunterladen an den Browser
    @version:    Tue, 30 Sep 2008 17:33:55 +0200
    @changed:    Erweitert um Angabe für den "richtigen" Dateinamen
    =============================================================================
*/
    // Kein Originalname übergeben? Dann nehmen wir den Dateinamen
    
if($org_filename == ''){
        
$org_filename $filename;
    }

    
// Soll die Datei zum Download angeboten werden?
    
if($download === TRUE){
        
header('Pragma: public');
        
header('Expires: 0');
        
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        
header('Content-Transfer-Encoding: binary');
        
header('Content-Disposition: attachment; filename=' $org_filename ';');    
    }

    
header('Content-Type: ' $ctype);
    
header('Content-Length: ' filesize($filelocation $filename));
    
//    readfile($filelocation . $filename);

    
$file fopen($filelocation $filename"r");

    while(!
feof($file) and (connection_status()==0)) {
        print(
fread($file1024*8));
        
flush();
    }
    
fclose($file);
    
    die();

Sollte eigentlich selbsterklärend sein
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 23.11.2009, 12:53
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard

Fast… der Typ 'application/octet-stream' ist obligatorisch für diese Methode? Oder sollte da der eigentliche Typ rein?
__________________
http://dnaber.de
Mit Zitat antworten
  #4 (permalink)  
Alt 23.11.2009, 12:55
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Zum Download reicht 'application/octet-stream' als Standardvorgabe. Wenn du eine Datei direkt im Browser darstellen lassen willst (z.B. ein PDF oder Bild), musst du den korrekten MIME Typen mit angeben.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #5 (permalink)  
Alt 23.11.2009, 12:56
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard

Das ging fix.

Danke für Deine Hilfe. Ich werde berichten.
__________________
http://dnaber.de
Mit Zitat antworten
  #6 (permalink)  
Alt 23.11.2009, 13:12
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Viel Erfolg
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #7 (permalink)  
Alt 23.11.2009, 13:28
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard

Hm, auch das will nicht so richtig. Klick ich auf den entsprechenden Link, der die Datei auswählt, läd der Browser diesmal ca. 5s bis der Speichern-Unter Dialog erscheint. Danach passiert wieder das selbe. Ich habe eine 0 Byte große Datei herunter geladen.

Dateipfade sind alle Korrekt, das hab ich geprüft.
__________________
http://dnaber.de
Mit Zitat antworten
  #8 (permalink)  
Alt 23.11.2009, 13:46
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Wie hoch ist den das PHP Timeout Limit?
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #9 (permalink)  
Alt 23.11.2009, 13:53
Benutzerbild von David
float:bergauf;
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 1.539
David sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle AtmosphäreDavid sorgt für eine eindrucksvolle Atmosphäre
Standard

Die max_execution_time liegt bei 30s.
__________________
http://dnaber.de
Mit Zitat antworten
  #10 (permalink)  
Alt 23.11.2009, 14:20
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.416
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Boris eine Nachricht über ICQ schicken Boris eine Nachricht über MSN schicken Boris eine Nachricht über Skype™ schicken
Standard

Zeig mal deinen kompletten Code, der dazu gehört - und wo genau liegen die Dateien? Was steht in FILE_PATH?
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
php Seiten online stellen online Serveradministration und serverseitige Scripte 7 27.03.2009 12:13
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 18:09
Mp3 zum Download anbieten, Wie? Ricardando (X)HTML 24 03.01.2008 20:31
Passwortabfrage + Download über PHP ONeill Serveradministration und serverseitige Scripte 4 21.11.2006 18:04
Download auf eigener Seite anbieten Adenauer Serveradministration und serverseitige Scripte 5 12.03.2006 11:09


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.