php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.12.2004, 14:26  
Gast
 
Beiträge: n/a
Standard Download eines ZIP geht bei Mac, aber bei IE nicht (ganz)

Hallo!
Gleich vorab - ich bin ziemlich ahnunglos, was PHP anbelangt, muss aber im Moment als letzter Mohikaner im Betrieb irgendwie ne Lösung finden zu einem sehr seltsamen Problem.
Auf einer PHP-basierten Webseite gibt es ZIP-Dateien zum Download über ein download.php. Einige früher problemlos downzuloadende ZIP-Dateien lassen sich zwar weiterhin downloaden, jedoch wird der Download über einen Windows-PC (mit Internet Explorer) nach 252 kB (258.040 bytes) als beendet erklärt, egal wie groß die Downloaddatei ist. Wird der gleiche Download-Link auf einem Apple iMac mit Internet Explorer abgeklickt, versteht der nur Bahnhof und erklärt: "Der Typ der ausgewählten Datei ist unbekannt. Sie können die Datei lokal speichern oder ein Hilfsprogramm für die Datei konfigurieren. MIME-Typ: application/save, Dateiname: download.php". Benutz ich aber Netscape 7 auf dem gleichen Mac, erfolgt der Download problemlos und vollständig!
Ich bin hier absolut rat- und ahnungslos, kann mir hier jemand den entscheidenden Tip geben?
D., der Seeker
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.12.2004, 14:31  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Gibt auch hier wieder mehrere Ansätze. Das für mich plausibelste ist, dass hier die HTTP- Header nicht sauber gesetzt werden. Sofern das ohne weiteres möglich ist, suche einmal nach "Content-Type" in den Scripten. Dort sollte so einiges an HTTP- Header (Content-Length usw.) auftauchen und kopier die Passage einmal ins Forum.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 28.12.2004, 15:11  
Gast
 
Beiträge: n/a
Standard

Das stammt aus der download.php:
---------------------------------------------------------------------------------
header("Content-Type: ".$mime[$file->type]);
header("Content-Length: $size");
readfile($filename);
exit;
}
elseif($cfg["OS"] == "windows" AND $cfg["BROWSER"] == "msie")
{
if(!is_dir("download/".session_id()))
{
mkdir("download/".session_id());
}

copy($filename, "download/".session_id()."/".$file->name);
header("Location: download/".session_id()."/".$file->name);
exit;
}
else
{
header("Content-Type: application/save");
header("Content-Length: $size");
header("Content-Disposition: attachment; filename=$shortname");
header("Content-Transfer-Encoding: binary");
---------------------------------------------------------------------------------

Hilft das weiter?
 
Alt 28.12.2004, 16:12  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Was ich mich gerade frage: Wieso ist dort eine Prüfung auf einen Browser drin??? Das sieht recht merkwürdig aus. Kannst du die gesamte Datei einmal posten, sofern das nicht allzulang ist? Und setze sie nach Möglichkeit zwischen [ code] und [ /code], das macht das ganze etwas lesbarer.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 28.12.2004, 16:29  
Gast
 
Beiträge: n/a
Standard

Bitte sehr:
Code:
<?php

// current ver. 1.00
//
// -= CHANGELOG =-
// 03/07/08 -=- ver 1.00
// working version, will download the associated file, via db

//includes
/*------------------------------------------------------------------------------------------------------------*/
require($_SERVER["DOCUMENT_ROOT"]."/inc/require.inc");

if(ereg("preview", $_SERVER["SERVER_NAME"]))
  {
	$pathToUpload = "../www.DOMAINNAME.de/";
	}

$config = new config();
/*------------------------------------------------------------------------------------------------------------*/

function mimetype()
  {
  $file = file('/etc/mime.types');
  foreach($file as $line) 
	  {
    rtrim($line);
    if (preg_match('/^\#/', $line))
    continue;
    $elms = preg_split('/\s+/', $line);
    $type = array_shift($elms);
    foreach ($elms as $elm) 
	    {
      $mime[$elm] = $type;
      }
    }		
	return $mime;
	}
	
if(!$_SESSION["user"])
  {
	$user = new user();
	}
else
  {
	$user = $_SESSION["user"];
	$user->user();
	}	
	
$file = new HTMLFile();
$file->getProperties($_GET["file"]);

if($file->use == 1)
  {
  if($_GET["thumb"])
    {
		$thumb = "thumb/";
		$filename = (file_exists("upload/".$thumb.$file->id."_".$file->name)) ? "upload/".$thumb.$file->id.".png" : $pathToUpload."upload/".$thumb.$file->id.".png";  	
  	}
	else
	  {
		$filename = (file_exists("upload/".$thumb.$file->id."_".$file->name)) ? "upload/".$thumb.$file->id."_".$file->name : $pathToUpload."upload/".$thumb.$file->id."_".$file->name;
		}
	
  $shortname = $file->name;
  if(file_exists($filename) && !eregi("p?html?", $filename) && !eregi("inc", $filename) && !eregi("php3?", $filename))
    {
    $size = filesize( $filename );
    if($_GET["view"])
      {
  		$mime = mimetype();
      header("Content-Type: ".$mime[$file->type]); 
      header("Content-Length: $size");
      readfile($filename); 
      exit; 		
    	} 
		elseif($cfg["OS"] == "windows" AND $cfg["BROWSER"] == "msie")
		  {
			if(!is_dir("download/".session_id()))
			  {
				mkdir("download/".session_id());
				}
			
			copy($filename, "download/".session_id()."/".$file->name);	
      header("Location: download/".session_id()."/".$file->name);
			exit;			
			}
  	else
  	  {
      header("Content-Type: application/save");
      header("Content-Length: $size");
      header("Content-Disposition: attachment; filename=$shortname"); 
      header("Content-Transfer-Encoding: binary");
      readfile($filename);
      exit; 
  		}
    }
	}
else
  {
	header("Location: ".$cfg["defaultPage"]);
	}
?>
 
Alt 28.12.2004, 16:36  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Also die Zeilen raffe ich nicht vom Sinn her.
Code:
      elseif($cfg["OS"] == "windows" AND $cfg["BROWSER"] == "msie") 
        { 
         if(!is_dir("download/".session_id())) 
           { 
            mkdir("download/".session_id()); 
            } 
          
         copy($filename, "download/".session_id()."/".$file->name);    
      header("Location: download/".session_id()."/".$file->name); 
         exit;          
         }
Mir is schon klar, was das soll: Der Internet Explorer kriegt eine Extra- Wurst. Aber warum?
Kommentier das mal aus, so dass jeder Browser, egal ob Firefox oder IE oder sonstwer in das folgende else mit dem "readfile($filename)" geleitet wird. Die Header dort kann auch IMHO jeder Internet Explorer kapieren.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 28.12.2004, 16:37  
Gast
 
Beiträge: n/a
Standard

Zu download.php sollte ich vielleicht sagen, dass die Datei seit geraumer Zeit nicht mehr verändert wurde und der Download mit diesem Script früher problemlos lief.
 
Alt 28.12.2004, 16:49  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Mag sein, dass es hier durchaus einmal ein Problem in einer IExplorer- Version gab, der die Header nicht richtig interpretiert hat. Daher vielleicht diese Krücke, dass der IExplorer eine Extrawurst kriegt. Mag auch sein, dass sich durch andere Einflüsse (Plattenplatz, Verzeichnisrechte etc.) irgendwelche anderen Konstellationen ergeben haben.

Versuch es mal damit, den von mir genannten Bereich auszukommentieren. Dann wird an jeden Browser ein normales HTTP-Attachement geschickt und das sollte der IExplorer auch können.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 28.12.2004, 17:15  
Gast
 
Beiträge: n/a
Standard

Blöde Frage: wie kommentiere ich in einem PHP-Script aus?
 
Alt 28.12.2004, 17:24  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

zeilenweise mit # oder //
über merhere zeilen am anfang /* am ende */
robo47 ist offline  
 


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
Download per paypal verkaufen Andreas08 Scriptbörse 5 29.08.2008 05:54
Kann mir jemand die eine Zeile umändern - Direkter Download core PHP Tipps 2008 4 30.03.2008 17:28
Download abfrage mijoko PHP Tipps 2007 4 18.06.2007 17:12
Nach Download -> Seite erscheint in HTML-Code Locutus007 PHP Tipps 2006 8 26.05.2006 02:46
Download starten (header funktion), vorher Text ausgeben? Harakiri81 PHP-Fortgeschrittene 19 16.05.2006 21:15
Dateiname bei Download ändern aber wie? CoverDB PHP Tipps 2006 16 20.03.2006 16:40
[Erledigt] Download PHP Tipps 2006 6 26.01.2006 19:15
Download Problem PHP Tipps 2005-2 3 22.07.2005 16:11
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Dateioperationen und Download kontrollieren Alpha Centauri PHP Tipps 2005 7 02.03.2005 11:52
PHP file Download script ??!! PHP Tipps 2004 0 25.09.2004 09:44
datei nach download löschen PHP Tipps 2004 9 18.09.2004 20:47
datei nach download löschen HTML, Usability und Barrierefreiheit 0 18.09.2004 17:16
download und Insert problem! PHP Tipps 2004 4 04.09.2004 16:51
[Erledigt] .txt Datei verlinken für Download... 18inch HTML, Usability und Barrierefreiheit 6 27.06.2004 10:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ie zip 0 byte, hochladen \mime-typ \'application/save\, \application/save\ ie php, der typ der ausgew, file download php mit internet explorer klappt nicht zip, php zip download ie, dateidownload zip nicht lokal speichern

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 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.