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, 20:42
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
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
__________________
github | http://dnaber.de

Geändert von David (22.11.2009 um 21:01 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 23.11.2009, 12:48
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
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, 13:53
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Fast… der Typ 'application/octet-stream' ist obligatorisch für diese Methode? Oder sollte da der eigentliche Typ rein?
__________________
github | http://dnaber.de
Mit Zitat antworten
  #4 (permalink)  
Alt 23.11.2009, 13:55
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
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, 13:56
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Das ging fix.

Danke für Deine Hilfe. Ich werde berichten.
__________________
github | http://dnaber.de
Mit Zitat antworten
  #6 (permalink)  
Alt 23.11.2009, 14:12
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
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, 14:28
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
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.
__________________
github | http://dnaber.de
Mit Zitat antworten
  #8 (permalink)  
Alt 23.11.2009, 14:46
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
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, 14:53
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Die max_execution_time liegt bei 30s.
__________________
github | http://dnaber.de
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 23.11.2009, 15:20
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
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
Sponsored Links
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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP: download erzwingen will nicht! sepp88 Serveradministration und serverseitige Scripte 4 04.08.2010 12:28
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09
Mp3 zum Download anbieten, Wie? Ricardando (X)HTML 24 03.01.2008 21:31
Passwortabfrage + Download über PHP ONeill Serveradministration und serverseitige Scripte 4 21.11.2006 19:04
Download auf eigener Seite anbieten Adenauer Serveradministration und serverseitige Scripte 5 12.03.2006 12:09


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:51 Uhr.