php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.05.2006, 08:32  
Neuer Benutzer
 
Registriert seit: 10.05.2006
Beiträge: 7
Harakiri81
Standard

Zitat:
Zitat von Bruchpilot
Zitat:
der Browser lädt die Datei im Hintergrund herunter und bringt dann den Downloaddialog.
Also alle hier installierten Browser zeigen während des Herunterladens eine Fortschrittsanzeige - nicht erst hinterher.
Welchen Browser benutzt Du?
Bei mir nicht. Ich verwende den Firefox 1.5! Da die Datei so groß ist....passiert erstmal wenig. Es geht ein neuer Tab auf, die Seite ist grau (klar), die Datei wird geladen, dann wenn sie fertig runtergeladen wurde, erscheint der Speichern-Unter-Dialog.

Im IE 6 sieht das so aus, dass zumindest unten in der Statusleiste der Fortschrittsbalken anwächst, aber das gilt ja für den Seitenaufbau und nicht für den Download.
Harakiri81 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.05.2006, 08:34  
Neuer Benutzer
 
Registriert seit: 10.05.2006
Beiträge: 7
Harakiri81
Standard

Zitat:
Zitat von Bruchpilot
Zitat:
Wenn der OP also seine 30 MB Datei - woher auch immer - einliest
Zitat:
$file = "/pfad/datei.exe";
Wenn das natürlich ein Netzwerkdateisystem über den Nordpol nach Timbuktu ist, kann sich das negativ auswirken.
Weiss nicht, was du mir damit sagen willst, aber ich hoffe du hast Verständnis dafür, dass ich hier keine Pfade von meinem Webserver posten möchte?
Kurz gesagt: ich hab den Pfad abgeändert.
Harakiri81 ist offline   Mit Zitat antworten
Alt 11.05.2006, 08:50  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von Harakiri81
Zitat:
Zitat von robo47
wie gibst du die datei aus ?
Code:
//Force the download
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
ich sehe kein passthru(), readfile(), schleife mit fread und echo oder ähnlliches,
darum gehts mir, wenn du z.b. erstmal xx mb in ne variable lädst und dann ausgibst, ist es klar, dass es erstmal anlaufen muss, dazu hab ich was im kopf, dass readfile irgendwann mal nen bug mit größeren dateien hatte und diese nicht ganz ausgegebenen hat, bzw erstmal vorher in ne leseschleife gefallen ist und damit massig speicher belegt hat.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 11.05.2006, 09:02  
Neuer Benutzer
 
Registriert seit: 10.05.2006
Beiträge: 7
Harakiri81
Standard

Zitat:
Zitat von robo47
Zitat:
Zitat von Harakiri81
Zitat:
Zitat von robo47
wie gibst du die datei aus ?
Code:
//Force the download
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header);
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
ich sehe kein passthru(), readfile(), schleife mit fread und echo oder ähnlliches,
darum gehts mir, wenn du z.b. erstmal xx mb in ne variable lädst und dann ausgibst, ist es klar, dass es erstmal anlaufen muss, dazu hab ich was im kopf, dass readfile irgendwann mal nen bug mit größeren dateien hatte und diese nicht ganz ausgegebenen hat, bzw erstmal vorher in ne leseschleife gefallen ist und damit massig speicher belegt hat.

mfg
robo47
YES!!!!!!
Das wars.....ich hab den Code von hier:
http://de.php.net/header
übernommen.

Code:
<?php

function dl_file($file){

   //First, see if the file exists
   if (!is_file($file)) { die("404 File not found!"); }

   //Gather relevent info about file
   $len = filesize($file);
   $filename = basename($file);
   $file_extension = strtolower(substr(strrchr($filename,"."),1));

   //This will set the Content-Type to the appropriate setting for the file
   switch( $file_extension ) {
         case "pdf": $ctype="application/pdf"; break;
     case "exe": $ctype="application/octet-stream"; break;
     case "zip": $ctype="application/zip"; break;
     case "doc": $ctype="application/msword"; break;
     case "xls": $ctype="application/vnd.ms-excel"; break;
     case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
     case "gif": $ctype="image/gif"; break;
     case "png": $ctype="image/png"; break;
     case "jpeg":
     case "jpg": $ctype="image/jpg"; break;
     case "mp3": $ctype="audio/mpeg"; break;
     case "wav": $ctype="audio/x-wav"; break;
     case "mpeg":
     case "mpg":
     case "mpe": $ctype="video/mpeg"; break;
     case "mov": $ctype="video/quicktime"; break;
     case "avi": $ctype="video/x-msvideo"; break;

     //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
     case "php":
     case "htm":
     case "html":
     case "txt": die("Cannot be used for ". $file_extension ." files!"); break;

     default: $ctype="application/force-download";
   }

   //Begin writing headers
   header("Pragma: public");
   header("Expires: 0");
   header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   header("Cache-Control: public");
   header("Content-Description: File Transfer");
  
   //Use the switch-generated Content-Type
   header("Content-Type: $ctype");

   //Force the download
   $header="Content-Disposition: attachment; filename=".$filename.";";
   header($header );
   header("Content-Transfer-Encoding: binary");
   header("Content-Length: ".$len);
   @readfile($file);
   exit;
}

?>
Ich dachte ich bräuchte das
@readfile($file);
exit;
nicht aber das habe ich nun in mein Testscript eingebaut, nun erscheint der Downloaddialog sofort. Sowohl im Firefox als auch im IE.

Danke, mein Problem ist damit behoben!
Harakiri81 ist offline   Mit Zitat antworten
Alt 11.05.2006, 11:42  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

öhm du willst mir nicht erzählen dass der download ohne readfile überhaupt gekommen ist ?
robo47 ist offline   Mit Zitat antworten
Alt 11.05.2006, 11:44  
Neuer Benutzer
 
Registriert seit: 10.05.2006
Beiträge: 7
Harakiri81
Standard

Zitat:
Zitat von robo47
öhm du willst mir nicht erzählen dass der download ohne readfile überhaupt gekommen ist ?
Doch! Er kam, nur halt erstmal ohne Downloaddialog. Die Datei wurde im Hintergrund runtergeladen, wenn sie geladen war, erschien der Downloaddialog. Dann sagte ich speichern, und die Datei war sofort auf der Platte
Harakiri81 ist offline   Mit Zitat antworten
Alt 11.05.2006, 21:05  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Aber dann wohl ohne Inhalt.
xabbuh ist offline   Mit Zitat antworten
Alt 11.05.2006, 21:26  
Erfahrener Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 1.557
PHP-Kenntnisse:
Fortgeschritten
Buhmann ist zur Zeit noch ein unbeschriebenes Blatt
Buhmann eine Nachricht über ICQ schicken Buhmann eine Nachricht über MSN schicken
Standard

Es gibt auch einen php.ini Eintrag namens "output_buffering"...
Buhmann ist offline   Mit Zitat antworten
Alt 16.05.2006, 14:04  
Gast
 
Beiträge: n/a
Standard

Wenn Du doch mal Text ausgeben möchtest...

da ohnehin ein "Speichern unter" Dialögchen gestartet wird, kann man sich hier auch das schöne Werkzeug FRAMES zunutze machen und den Download in einem blinden Frame packen (Höhe 0) während im anderen das Bla steht.

Da in diesem Fall weder ein Screenreader noch eine Suma was zu suchen hat, halte ich das für wenig verwerflich - muss ja nicht immer die überkandidelte Hochzuchtcode-Maschinerie gestartet werden, wenn's auch einfach geht
  Mit Zitat antworten
Alt 16.05.2006, 21:15  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von robo47
... dazu hab ich was im kopf, dass readfile irgendwann mal nen bug mit größeren dateien hatte und diese nicht ganz ausgegebenen hat,
Abgesehen von diversen Bugs:
bei readfile muß die Datei in den Scriptspeicher passen.
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Externe Variable über eine Funktion ausgeben errox PHP Tipps 2008 3 14.04.2008 11:26
JavaScript/PHP: qooxdoo 0.7.1 - Teil 1 : Eine Einführung Zergling-new Tutorials 6 25.01.2008 10:41
CSS - Bild im div container überlappt andere container Buschdieb HTML, Usability und Barrierefreiheit 13 19.07.2007 23:17
mysql - text ausgeben dws PHP Tipps 2006 14 15.06.2006 22:50
header download MK0 PHP Tipps 2006 4 24.02.2006 23:30
Download automatisch starten nicobischof PHP Tipps 2007 1 26.11.2005 08:27
Text aus der DB verteilen PHP Tipps 2007 17 16.11.2005 12:04
Text ausgeben bis zum Zeilenumbruch Unbekanntes_Pferd PHP Tipps 2007 5 11.11.2005 09:07
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
[Erledigt] Link PHP Tipps 2005-2 10 20.07.2005 21:28
Tabelle in einer Funktion ausgeben PHP Tipps 2005 3 25.04.2005 23:08
[Erledigt] header - Funktion - Datei speichern PHP-Fortgeschrittene 3 03.02.2005 14:38
Funktion ausgeben PHP Tipps 2005 8 10.01.2005 17:18
download automatisch starten PHP Tipps 2004 7 18.09.2004 20:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
erst seite ausgeben dann funktion starten php

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.