php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.02.2011, 09:11  
Benutzer
 
Registriert seit: 19.10.2010
Beiträge: 36
PHP-Kenntnisse:
Anfänger
acdc befindet sich auf einem aufstrebenden Ast
Standard Dateidownload - php datei wird geladen.

Hallo,

ich habe eine kurze Funktion, mit dem ich einfach eine Datei herunterlade.

PHP-Code:
function download($Datei//zb: $Datei=daten/ordner/datei.zip
  
{
    if (
file_exists($Datei)) 
    {
      
$Dateiname basename($Datei);
      
$Groesse filesize($Datei);
      
$file=fopen($Datei,'r');
      
set_time_limit(0);
      if (
$file
      {
        
header("Pragma: public");
        
header("Expires: 0");
        
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        
header("Cache-Control: private",false);
        
header("Content-Type: application/force-download");
        
header("Content-Type: application/octet-stream");
        
header("Content-Type: application/download");
        
header("Content-Disposition: attachment; filename=\"".$Dateiname."\";");
        
header("Content-Description: File Transfer");
        
header("Content-Transfer-Encoding: binary");
        
header('Content-Length: '.$Groesse );
        
flush();
        while (!
feof($file)) 
        {
          print(
fread($file,4096));
          
flush();
        }
      } 
      
fclose($file);
      die();
    }
    else
    {
      return 
false;
    } 
Starte ich nun den Download über den Browser (IE, so wird beim ersten Versuch die php-Datei heruntergeladen (was dann natürlich nicht funktioniert und auch nicht so sein sollte). Erst wenn ich die Adresse das 2. Mal im Browser aufrufe (z.b. durch "Aktualisieren") wird die richtige Datei angesprochen und sie kann heruntergeladen werden.

Für mich ist eigentlich die Frage ob es am PHP-code liegt. Das Ganze läuft auf einem IIS-Server über https.

Danke für die Vorschläge!
acdc
acdc ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 22.02.2011, 12:03  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von acdc Beitrag anzeigen
Starte ich nun den Download über den Browser (IE, so wird beim ersten Versuch die php-Datei heruntergeladen (was dann natürlich nicht funktioniert und auch nicht so sein sollte).
Das bezweifle ich doch stark.
Vermutlich hat einfach nur die abgespeicherte Datei die Endung .php?

Zitat:
Erst wenn ich die Adresse das 2. Mal im Browser aufrufe (z.b. durch "Aktualisieren") wird die richtige Datei angesprochen und sie kann heruntergeladen werden.
Downloads per header sind im IE oftmals problematisch.
Die Nutzerkommentare im Manual haben einiges an Hinweisen, was man versuchen kann, um das zu beheben.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 22.02.2011, 12:26  
Benutzer
 
Registriert seit: 19.10.2010
Beiträge: 36
PHP-Kenntnisse:
Anfänger
acdc befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antwort!

naja, die Datei hat nicht die Endung .php. Der Fehler tritt auf, seit dem ich das SSL-Zertifikat eingerichtet habe.

hm... werde mich mal umsehen.
acdc ist offline   Mit Zitat antworten
Alt 22.02.2011, 12:34  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von acdc Beitrag anzeigen
naja, die Datei hat nicht die Endung .php.
Sondern - du erhältst wirklich den PHP-Code des Scriptes?

Das würde für eine massive Fehlkonfiguration des Servers sprechen.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 22.02.2011, 13:00  
Benutzer
 
Registriert seit: 19.10.2010
Beiträge: 36
PHP-Kenntnisse:
Anfänger
acdc befindet sich auf einem aufstrebenden Ast
Standard

Nein den Code bekomme ich gottseidank nicht es wird nur angezeigt, das die Datei index.php heruntergeladen werden soll, was dann aber fehl schlägt. Drücke ich dann F5 (aktualisieren) so wird die gewünschte Datei heruntergeladen

...
acdc ist offline   Mit Zitat antworten
Alt 22.02.2011, 13:02  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Der Fehler tritt auf, seit dem ich das SSL-Zertifikat eingerichtet habe.

da könnte dir das evtl. weiterhelfen: http://www.php.de/php-fortgeschritte...wnload-ie.html ([Erledigt] SSL Dateidownload IE)
cycap ist offline   Mit Zitat antworten
Alt 22.02.2011, 13:55  
Benutzer
 
Registriert seit: 19.10.2010
Beiträge: 36
PHP-Kenntnisse:
Anfänger
acdc befindet sich auf einem aufstrebenden Ast
Standard

@cycap

Danke, das hört sich gut an. Mit dem Firefox funktionierts nämlich auch ohne Probleme und wenn ich das Ganze ohne Zertifikat nutze, funktionierts auch. Leider war die Ängerung im Header nicht die entgültige Lösung.

der Header sieht nun so aus:
PHP-Code:
        header("Content-Type: application/force-download");
        
header("Content-Type: application/octet-stream");
        
header("Content-Type: application/download");
        
header("Content-Disposition: attachment; filename=\"".$Dateiname."\";");
        
header("Content-Description: File Transfer");
        
header("Content-Transfer-Encoding: binary");
        
header('Content-Length: '.$Groesse );
            
header("Cache-Control: ");
            
header("Pragma: "); 
Scheinbar stimmt da noch etwas mit dem header nicht.
acdc ist offline   Mit Zitat antworten
Alt 22.02.2011, 20:01  
Neuer Benutzer
 
Registriert seit: 05.01.2010
Beiträge: 12
PHP-Kenntnisse:
Anfänger
ArneRie befindet sich auf einem aufstrebenden Ast
ArneRie eine Nachricht über Skype™ schicken
Standard

Es muss wenn ich mich nicht täusche "Cache-control" heißen.
__________________
Arne Riemann

Meine Heimat im Netz Der GeekPub (Blog)
ArneRie ist offline   Mit Zitat antworten
Alt 22.02.2011, 21:03  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von ArneRie Beitrag anzeigen
Es muss wenn ich mich nicht täusche "Cache-control" heißen.
Du täuschst dich. (Sofern du nicht auf einen speziellen IE-Bug bei der Verarbeitung von HTTP-Headern beziehst?)

Die Bezeichner sind case insensitive.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 22.02.2011, 21:27  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Gibt es einen Grund warum du so viele header() schickst? Lass doch den ganzen Krempel erstmal weg. Handbuchbeispiel:
PHP-Code:
<?php
header
('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="downloaded.pdf"'); // sehe hier kein ; wie bei dir
readfile('original.pdf');
?>
Wenn du nicht genau weisst, was ein bestimmter Header bedeutet, lass ihn lieber weg. Header werden durchaus interpretiert, entsprechend solltest du nicht wahllos welche senden
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   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
Auslesen wann eine Datei auf den Server geladen wurde picco PHP Tipps 2009 6 22.01.2009 13:29
Wert in externer Datei speichern Abakay PHP Tipps 2008 6 04.12.2008 18:56
Datei per Buttonklick runterladen... go1denboy PHP Tipps 2008 7 14.06.2008 20:25
Großer Baum -> Große Datei -> Hohe Ladezeit :( PsychoEagle PHP Tipps 2008 7 22.09.2007 12:44
.gz Datei entpacken und mit dem Inhalt weiterarbeiten R4v3r PHP Tipps 2007 8 02.02.2007 14:49
String als Datei speichern Zangelo PHP Tipps 2006 23 25.08.2006 14:13
Datei auf FTP-Server ändern ohne lokal abzuspeichern faux PHP-Fortgeschrittene 11 02.09.2005 11:54
Datei mehrmals öffnen und schließen in einem Skript PHP Tipps 2005-2 14 14.07.2005 18:12
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
Includete Datei nicht gleich ausgeben Madden PHP-Fortgeschrittene 1 12.05.2005 00:19
xfdf Datei mit PHP an eMail senden Problem: Leere Datei PHP Tipps 2004-2 1 07.12.2004 12:25
Flash wird in datei index.php nicht geladen PHP Tipps 2004 7 01.11.2004 16:28
[Erledigt] datei editieren PHP Tipps 2004 1 10.09.2004 20:33
(ich schonwieder) Link seite automatisch imported_DJ Nuno PHP Tipps 2004 14 19.08.2004 17:42
Wie kann ich eine PHP Datei in eine HTML Datei umwandeln PHP Tipps 2004 2 12.08.2004 18:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php file download, php textdatei force download, nutzerkommentare zu header im manual, header wird in datei angezeigt php, php richtiger header für textdatei, php5 dateien werden heruntergeladen geladen, nutzerkommentare zu header im manual ie, php ie download beim ersten mal, php force-download oder octet-stream, datei vom ftp server herunterladen in php mit header, explorer dateidownload pdf, php header download, ie txt speichern nicht öffnen force-download, php welche php datein werden geladen, explorer will php datei herunterladen, header(\content-type: application/pdf\); wird nicht beim ersten mal angezeigt, php textdatei download, internet explorer will ständig php datei herrunterladen, file von iis-server herunterladen, php datei application

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:26 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