Ich lasse über ein .php script datein und ordner aufm server auslesen und verlinken. Da ich in dem script keinen mimetype prüfen lassen kann hab ich das problem, dass mir beim anklicken verschiedenser daten wie .pptx oder .docx entweder datensalat oder ein 404 html error präsentiert wird. Meine Idee das zu umgehen waere gewesen (so wie der IE es standartmäßig bei einigen dateitypen macht) die datein serverseitig als *.zip an den browser zu senden, ohne das ich sie als .zip hochladen muss.
Gibts da moeglichkeiten sowas zu realisieren ohne an die grenzen der auf bplaced aktivierten php funktionen zu stoßen?
egal wie die Orginaldatei heißt, bekommt der Browser sie als datei.pptx gesendet. Als MIME-Typ bekommt er application/octet-stream, was als undefinierter Dateityp zu werten ist
Sofern zu den Formaten bei IANA ein ‘Content-Type’, ehemals
’MIME-Type’ angemeldet ist, kann man den doch verwenden,
entweder dann - sofern der server den nicht bereits selber kennt -
per .htaccess für alle Dateien mit gleicher Endung angeben oder
eben bei jeder Datei einzeln per PHP.
Bei einigen experimentellen Formaten haben sich auch
vorläufige Typen etabliert, erkennt man dann am ‘x-’ im Subtyp.
Besser natürlich, man setzt gleich von vorne herein auf
Standardformate, für die gibt es eigentlich einen angemeldeten
Typ ;o)
Wenn es sich um komprimierte oder Container-Formate handelt,
ist es ja überflüssig, die mit zip oder gzip nochmal einzupacken.
<?php
$f = "./files/".$_GET['file'];
$f = str_replace("..", "", $f);
$zip = new ZipArchive();
$z = $f.".zip";
$zip->open($z, ZIPARCHIVE::CREATE) OR exit;
$zip->addFile($f);
$zip->close();
header("content-type: application/zip");
header("Content-Disposition: attachment; filename=\"$z\"");
readfile($z);
unlink($z);[/code]
[/quote]
Jaein, also die dl.php stimmt, aber die index läuft noch mit nem andren script :stuck_out_tongue:
Das bei verlinkung -> .zip -> download klappt, sind nur noch ein paar schoenheitsfehler zu verbessern ;D
Mein Verzeichnisskript macht eig. auch genau das gleiche wie deiner, nur er verhindert, dass als Pfad “…” angegeben wird, was zur Folge hätte, dass der User das Übergeordnete Verzeichnis aufgelistet bekommt
Das wechseln in das übergeordnete Verzeichnis des aktuell angezeigten müsste man nur noch implementieren:
Also das downloaden in zip archiven geht jetz wunderbar, keine unnoetigen ordner mehr, keine ueberflüssigen archive aufm server, allerdings:
Der IE ist der eintige browser der wiedermal rumspackt -.-
versucht man ein archiv, vor allem aber die .docx datein, herunter zu laden packt er sie ordnungsgemaeß ein und uebertraegt sie, aber beim oeffnen wird gemeldet archiv zerstoert =/
Gut, also es liegt nicht am auslesenden script =/ auch mit deiner variante habe ich das problem, dass die runetrgeladenen archive via IE korrupt sind. Könnte das vllt an dem script in der download.php liegen? eine andere erklärung hab ich naemlich mitlerweile wirklich nicht mehr -.-
Also, es funktioniert definitiv für: Opera 9.63, Mozilla Firefox (aktuellste Ver.), Safari 4 (allerdings Darstellungsprobleme )
Es funktioniert NICHT bei: IE 6/7, Avant Browser
Trotzdem nocheinmal Danke für deine Bemuehungen, ich denke, ich werde die User vom IE darauf hinweisen, dass seine Benutzung zu datenmuell fuehrt und es damit auf sich beruhen lassen muessen