php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.02.2011, 00:29  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.631
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

PHP-Code:
        header("Content-Type: application/force-download");
        
header("Content-Type: application/octet-stream");
        
header("Content-Type: application/download"); 
Das sieht mir so ein bischen nach Streufeuer aus nach dem Motto "irgendwas wird der Browser schon fressen"
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.02.2011, 10:27  
Benutzer
 
Registriert seit: 19.10.2010
Beiträge: 36
PHP-Kenntnisse:
Anfänger
acdc befindet sich auf einem aufstrebenden Ast
Standard

Also die Funktion sieht nun folgendermaßen aus:

Habe testhalber eine datei benutzt, die nicht in einem Unterordner sitzt.
PHP-Code:

function download($Datei)
  {
    if (
file_exists($Datei)) 
    {
      
$Dateiname basename($Datei);
      
$Groesse filesize($Datei);
      
$file=fopen($Datei,'r');
      
set_time_limit(0);
      if (
$file
      {
      
header('Content-type: image/jpeg');
header('Content-Disposition: attachment; filename="Bild14690.jpg"'); 
readfile('Bild14690.jpg');
      } 
      
fclose($file);
      die();
    }
    else
    {
      return 
false;
    }
  } 
Leider tritt hier das selbe Problem auf. Der IE möchte immer die php-Datei herunterladen...
Kann das vielleicht auch an den erhöhten Sicherheitseinstelleungen am IE liegen? Leider kann ich es hier nur von einem Windows Server 2003 testen und diese Einstellungen kann man dort leider nicht ändern.

acdc
acdc ist offline   Mit Zitat antworten
Alt 23.02.2011, 11:40  
Erfahrener Benutzer
 
Registriert seit: 15.04.2010
Beiträge: 813
PHP-Kenntnisse:
Fortgeschritten
Paul.Schramenko befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
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
Allerdings, das will ich doch auch meinen.
In meiner DL-Methode werden nur 3Header gesetzt und es funktioniert eigentlich prima, noch nie Probleme gehabt:
Code:
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$name);
__________________
"My software never has bugs, it just develops random features."
"Real programmers don't comment. If it was hard to write, it should be hard to understand!"
Positive Bewertungen sind nicht unwillkommen...
Paul.Schramenko ist offline   Mit Zitat antworten
Alt 23.02.2011, 11:44  
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

Du läufst rum wie ein geköpftes Huhn! Warum machst du die Datei mit fopen() auf, wenn du sie mit readfile() ausliest?

return false bringt auch relativ wenig, du willst einen Fehler ja mitbekommen, also gib ihn auch aus. Hast du ein Onlinebeispiel? Hast du evtl. die Session offen?
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 23.02.2011, 12:56  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

das passiert halt, wenn man Code aus 2 verschiedenen Quellen kopiert, ihn nicht versteht und dann noch eure gut gemeinten Hinweise einbaut.

Da mir die gesamte Download-Funktion extrem bekannt vorkommt (der Code inklusive Variablenbezeichnungen ist wohl aus einem meiner Foren-Beiträge entnommen....) mal soviel zur Erklärung

Ich stand vor ähnlichen Problemen, wie der TE .. die "einfache" Lösung mit den 3 kurzen Header-zeilen und readfile funktioniert unter 2 Bedingungen:

a) der Browser ist NICHT IE (6)
b) die Datei ist kleiner als das halbe MemoryLimit von php bzw das was davon noch zur Verfügung steht.

für b) hab ich aus einem anderen Forum-beitrag diese Lösung mit fopen / fread und einem kleinen Pufferspeicher von 4 kbyte gefunden - damit kann ich Dateien beliebiger Größe runterladen, ohne vom Speicherlimit von php auch nur irgendwie tangiert zu werden (readfile lädt die Datei einmal komplett in den Speicher und braucht dann obendrein nochmal die gleiche Speichermenge als Ausgabepuffer in Richtung Browser des Clients)
für a) brauchts tatsächlich diese Menge an Headern, sonst hab ich exakt das Problem des TE , IE erzählt mir irgendwas vom Klapperstorch, welche Datei er runterladen will - und das scheitert, weil es die Datei angeblich nicht gibt - selbstverständlich gab es die Datei - vorher dynamisch ausgewürfelt und auf dem Webserver ins Dateisystem geschrieben, nur IE weigerte sich den Dateinamen zu benutzen und verwendete einen php-script namen, der natürlich in dem betreffenden Ordner nicht vorhanden war. Erst mit allen Header-Zeilen konnte ich IE6 davon überzeugen, die richtige Datei herunter zu laden - und bei mir wird auch https eingesetzt.
Möglich das es kürzer auch geht - aber ich hatte meine Gründe und konnte die Probleme mit älteren Forenbeiträgen lösen, die auf obige Lösung hinausliefen ....
allerdings scheint da beim Kopieren des Codes wohl einiges abhanden gekommen zu sein ^^ vielleicht macht deshalb der IIS die Probleme - oder aber der IE8 ist etwas näher an den Standards des w3c - dann funktioniert es vielleicht auch dort mit den kurzern Headern - stand bei mir aber nicht zur Debatte .. Firefox 3.6 und IE 6 ist bei meinem Projekt zwingend vorgeschrieben
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (23.02.2011 um 13:35 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 24.02.2011, 15:52  
Benutzer
 
Registriert seit: 19.10.2010
Beiträge: 36
PHP-Kenntnisse:
Anfänger
acdc befindet sich auf einem aufstrebenden Ast
Standard

@ eagel275. Das mag schon sein, dass ich den Code von diesem Forum habe - irgendwie muss man das doch lernen. Das einzige, was nun nicht passt ist, dass ich dieses Thema vielleicht nicht unter (php-Fortgeschrittene) posten hätte sollen.

Also Das Problem lag an den erhöhten Sicherheitseinstellungen auf WinServer2003. Der Code von eagel275 funktioniert also ohne Probleme.

Danke acdc

Geändert von acdc (25.02.2011 um 08:50 Uhr).
acdc 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 header download ie8, php website will immer datei speichern, ie php will datei speichern, php wahrend datei geladen wird, php seiten runterladen, php ie problem download fread, download ohne content-disposition ie8

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