Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

http und ftp download - bei http wird ISO-Datei kaputtgemacht durch Größenänderung

Frage Entwicklung PHP

Mitglied: bufferm44

bufferm44 (Level 1) - Jetzt verbinden

03.07.2009, aktualisiert 19:53 Uhr, 5015 Aufrufe, 6 Kommentare

Hi zusammen,

ich habe ein großes Problem, in einer Firma können User von einer (internen) website DVD-Images herunterladen. Das ist wie folgt realisiert:

01.
... 
02.
aus einer Datenbank auslesen welche ID (= Filename) das Image-File hat... 
03.
... 
04.
$dvdimage=sprintf("ftp://user:password@10.10.10.10/opt/data2/DVD/%s.ISO",$dbobject->id); 
05.
printf("<a href=\"%s\" style=\"text-decoration: none;\" ><img src=DVD/dvd_download.gif border=0></a><br>\n",$dvdimage); 
06.
...	
Das funktioniert auch einwandfrei, dummerweise kann man so durch den Link schön das Passwort des FTP-Servers sehen (im Browser unten links als Link).

Meine Idee war nun folgende:

Die Zeile 5 durch diese zu ersetzen:

01.
printf("<a href=\"DVD/dvddownload.php?id=%s\" style=\"text-decoration: none;\" ><img src=DVD/dvd_download.gif border=0></a><br>\n",$dbobject->id);
um eine weitere php-datei "dvddownload.php" aufzurufen. Die enthält:

01.
<? 
02.
$file=$id.".ISO"
03.
$path="/opt/data2/DVD/".$id.".ISO"
04.
 
05.
header('Content-type: application/$iso'); 
06.
header("Content-Disposition: attachment; filename=\"".$file."\";" ); 
07.
 
08.
readfile($path); 
09.
?>
Das funktioniert auch.

Problem: Das runtergeladene ISO-File hat eine (um ein paar Bytes) abweichende Dateigröße, was für MAC-Benutzer bedeutet, dass das Image nicht mehr erkannt wird weil Größe/2048 nicht mehr glatt ist. Bei der ftp-Version besteht das Problem NICHT!

Ich vermute dass hier mein Problem erklärt wird:

http://www.apfeltalk.de/forum/iso-datei-erkannt-t127516.html

Wie erreiche ich nun per http-download dass die Größe der Datei nicht mehr verändert wird, jemand eine Idee?

PS neuen eingeschränkten ftp-user einrichten fällt aus, da liegen pro Ordner sehr viele files und großzügig markieren und runterladen soll vermieden werden, nur durch die Weboberfläche mit vorheriger Berechtigungsprüfung darf man runterladen...

Grüße

Tobi
Mitglied: Supermax
04.07.2009 um 08:48 Uhr
Sollte Zeile 5 nicht eher heißen
01.
header('Content-type: application/iso');
(also ohne das $ Zeichen)?

Ansonsten fällt mir als Fehlerursache nur ein daß die 32bit Versionen von PHP haben manchmal Probleme mit Dateien > 2GB (ich weiss ja nicht wie groß die ISOs sind) haben. Welcher Browser wird denn auf Mac-Clients zum Download verwendet?

Eventuell kann man sich mit einem geeigneten Tool die kompletten HTTP-Header ausgeben lassen und so dem Fehler auf die Schliche kommen.
Bitte warten ..
Mitglied: bufferm44
04.07.2009 um 13:14 Uhr
Hi Supermax,

ja klar, ohne $, das ist wohl irgendwie beim Kopieren da mit reingerutscht...

Ich habe meinen Fehler mittlerweile gefunden, ich habe gestern anscheinend den Wald vor lauter Bäumen nicht mehr gesehen, nachdem ich irgendwann im Laufe des Tages die "header("Content-Length: $laenge");" Angabe getestet hatte, sie aber anscheinend keinen Wert zurück gab (Pfad falsch? Keine Ahnung), hatte ich diese Zeile wieder auskommentiert. Bei funktionierender Zuweisung von $laenge und dem zurückkegebenem Wert scheinen die Dateigrößen nun nach dem Runterladen wieder exakt zu stimmen.

01.
  
02.
$file=$id.".ISO"
03.
$path= "/opt/data2/DVD/".$id.".ISO"
04.
 
05.
$laenge = filesize($path) ; 
06.
header("Content-Type: application/force-download");  
07.
header("Content-Length: $laenge");  // -----!!!!!------  
08.
header("Content-Disposition: attachment; filename=\"".$file."\";" ); 
09.
readfile($path);
Hatte nur die Möglichkeit das an einem Mac via VPN und VNC zu testen aber dort lief es (habe nur VPN Secure Client für Windows). Zum Testen habe ich nur Images mit <200MB getestet, werd Montag mal ein großes testen...

Auf den Macs kommen übrigens Firefox und Safari zum Einsatz.

LG Tobias
Bitte warten ..
Mitglied: bufferm44
09.07.2009 um 17:32 Uhr
Hm,

bei den meisten Files klappt es jetzt, eben habe ich eins gehabt das war auf dem Server:

2.225.936.384 Byte

und nach dem Download

2.225.936.387 Byte

3 Bytes !!! Wo kommen die nur her?

Tobias
Bitte warten ..
Mitglied: Supermax
09.07.2009 um 17:44 Uhr
Kann es sein daß du dein Script manchmal mit einem Editor abspeicherst, der bei UTF8-codierten Dateien den sogenannten "Byte Order Marker" schreibt? Das sind genau 3 Bytes, und unter Umständen werden diese dann vom Webserver mit ausgegeben, einige Browser können dies ignorieren, andere schreiben brav alles was vom Server herausgeschickt wird.

Besorge dir am besten mal ein Tool wie z.B. "Fiddler", damit kannst du genau sehen was zwischen Client (Browser) und Server hin und her geschickt wird.

Um ganz sicher zu gehen, solltest du nach dem readfile() direkt ein flush() und exit(); in dein Script schreiben, sonst kann es sein daß ein paar Leerzeilen nach dem schließendenen ?> in deinem Script ebenfalls noch ausgegeben werden.
Bitte warten ..
Mitglied: bufferm44
10.07.2009 um 02:04 Uhr
Also $leerzeilen= true, sogar 4 Stück, schäm...

das mit dem flush und exit probiere ich morgen mal,

ich benutze PSPad und der Byte Order Marker ist aus, ich denke mal das ist der Punkt "Ident.Bytes bei UTF-8", kein Haken gesetzt...

Tobias
Bitte warten ..
Mitglied: bufferm44
13.07.2009 um 21:23 Uhr
So, das scheint zu laufen, vielen Dank für die guten Tipps. Hast Du noch einen Tipp, warum die zu downloadende Datei NUR BEIM MAC beim runterladen mit "Größe unbekannt" läuft bis sie fertig runtergeladen wurde? Beim PC wird die Größe korrekt ausgegeben die Prozenzanzeige läuft astrein...

LG
Tobias
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Windows Systemdateien
Bootable iso Datei mit eigenen Datein erzeugen (10)

Frage von lord-icon zum Thema Windows Systemdateien ...

Windows XP
gelöst Suche Win XP Home Premium ISO Datei (7)

Frage von Stefan007 zum Thema Windows XP ...

Informationsdienste
Excel Datei ohne Download zur Verfügung stellen (4)

Frage von gnaulimon zum Thema Informationsdienste ...

Windows Server
SBS2008 Standart Iso Download (2)

Frage von semper zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...