jasso Geschrieben 26. November 2007 Teilen Geschrieben 26. November 2007 Hi Leute, ich habe einen kleinen Downloadmanager gebastelt bei welchem Benutzergesteuert Dateien hochgeladen, zugewiesen und Heruntergeladen werden. Mein Problem ist nun dass der Kunde z.B. einige Videodateien hochlädt welche beim klick auf die Datei (Downloadlink) nicht zum Speichern angeboten, sondern im Browser geöffnet werden. Kann ich das irgendwie umgehen und eine art "Ziel Speichern unter" Funktion ausführen? danke lg jasso Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 26. November 2007 Teilen Geschrieben 26. November 2007 Kann ich das irgendwie umgehen und eine art "Ziel Speichern unter" Funktion ausführen? content-disposition attachment - Google-Suche Allerdings hat das mit Javascript nix zu tun. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jasso Geschrieben 26. November 2007 Autor Teilen Geschrieben 26. November 2007 hmmm ... klappt eigentlich fast perfekt:<? $filename="irgendwas.mpg"; header("Content-Type: application/x-octet-stream"); header("Content-Length: " . filesize($filename)); header("Content-Disposition: attachment, filename='" . $filename . "'); echo filename_get_contents($filename); ?>[/PHP]nur leider benennt er mir die downzuloadende Datei immer nach dem PHP-File (in diesem fall "test.php"). kann ich das noch irgendwie abschalten? lg jasso Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 26. November 2007 Teilen Geschrieben 26. November 2007 nur leider benennt er mir die downzuloadende Datei immer nach dem PHP-File (in diesem fall "test.php"). kann ich das noch irgendwie abschalten? Was heißt er beendet die Datei? Meinst du eine Umleitung auf eine andere Seite? Das geht so nicht, Aber ein Link auf deine test.php und die in einem neuen Fenster öffnen sollte doch dann bei der alten Seite bleiben. Im Normalfall geht dann ja auch kein neues Fenster mehr auf, sondern es kommt nur die "Speichern unter..." Abfrage. (Oder ist das bei FF nur ein PlugIn was das bei mir tut?) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jasso Geschrieben 26. November 2007 Autor Teilen Geschrieben 26. November 2007 ^^ wie kommst du auf beenden? mein aktuelles problem ist nur noch dass er mir als namen der downloaddatei den namen der php-datei nimmt. lg jasso Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 26. November 2007 Teilen Geschrieben 26. November 2007 Ups... falscher Fehler Das liegt wohl an den einfachen Anführungszeichen in deinem Code. header("Content-Disposition: attachment, filename=\"" . $filename . "\""); EDIT: Wenn du schon mit doppelten in PHP arbeitest: header("Content-Disposition: attachment, filename=\"$filename\""); Bei doppelten werden Variablen aufgelöst Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jasso Geschrieben 26. November 2007 Autor Teilen Geschrieben 26. November 2007 leider nicht. hab ich auch vorher schon probiert. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jasso Geschrieben 26. November 2007 Autor Teilen Geschrieben 26. November 2007 header("Content-Disposition: attachment, filename='" . $filename . "');hmmm. parameter müssen allem anschein nach hier mit ';' und nicht mit ',' getrennt werden. jetzt gehts. danke auf jeden fall lg jasso Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jasso Geschrieben 4. Dezember 2007 Autor Teilen Geschrieben 4. Dezember 2007 jetzt hab ich noch das problem dass ich größere dateien (mehrere hundert MB) damit nicht downloaden kann. ich find in meiner php.ini allerdings keinen eintrag für downloadgrößen:confused: (erscheint mir auch nicht sinnvoll). die downgeloadeten dateien hiermit sind jetzt immer 0kb groß. weiß jemand wo ich hier noch die max downloadgröße einstellen kann? lg jasso Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 6. Dezember 2007 Teilen Geschrieben 6. Dezember 2007 weiß jemand wo ich hier noch die max downloadgröße einstellen kann? Nirgendwo? :confused: (macht ja auch keinen Sinn, denn die Downloadgröße is so groß, wie dein Skript etwas sendet) Wie gibst du die Datei denn aus? Änder die disposition mal von attachment auf inline, dann siehst du im Browser dierekt die ausgegebenen Daten. (Oder evtl irgendwelche Fehlermeldungen o.ä., die ja sonst mit in die Datei gespeichert werden) Könnte es sein, dass du in deinem Skript die Datei erst lädst und dann ausgibst? PHP hat eine Speicherbegrenzung, kann also nicht beliebig große Dateien laden (in den Speicher). EDIT: Alternativ könnte es noch die Laufzeitbegrenzung sein. Der apache bricht ein Skript ab, wenn es länger läuft als erlaubt. In so einem Fall wäre wohl ein direkter Link besser(?). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
jasso Geschrieben 6. Dezember 2007 Autor Teilen Geschrieben 6. Dezember 2007 ups ... sorry. hab vergessen reinzuschreiben dass das problem gelöst ist. danke trotzdem für die antwort jesterday. mit der speicherbegrenzung liegst du richtig. zusätzlich dazu hat die readfile-funktion bei der von mir verwendeten php-version noch nen kleinen fehler zu welchem ich allerdings ein workaround gefunden habe das recht gut funktioniert. hier mal der code für alle die das selbe problem haben:<? function readfile_chunked($filename,$retbytes=true) { $chunksize = 1*(1024*1024); // how many bytes per chunk $buffer = ''; $cnt =0; // $handle = fopen($filename, 'rb'); $handle = fopen($filename, 'rb'); if ($handle === false) { return false; } while (!feof($handle)) { $buffer = fread($handle, $chunksize); echo $buffer; if ($retbytes) { $cnt += strlen($buffer); } } $status = fclose($handle); if ($retbytes && $status) { return $cnt; // return num. bytes delivered like readfile() does. } return $status; } $file="..." header("Content-Type: application/x-octet-stream"); header("Content-Length: " . filesize($file)); header("Content-Disposition: attachment; filename=" . basename($file)); echo readfile_chunked($file); ?>[/PHP] lg jasso Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 6. Dezember 2007 Teilen Geschrieben 6. Dezember 2007 <? function readfile_chunked($filename,$retbytes=true) { $chunksize = 1*(1024*1024); // how many bytes per chunk $buffer = ''; $cnt =0; if ($handle = fopen($filename, 'rb')) { while (!feof($handle)) { $buffer = fread($handle, $chunksize); echo $buffer; if ($retbytes) { $cnt += strlen($buffer); } } if (fclose($handle) && $retbytes) { return $cnt; // return num. bytes delivered like readfile() does. } } return false; } ?> [/PHP] Mir war grad langweilig und ich hab deinen Code mal bissl optimiert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gurkenpapst Geschrieben 6. Dezember 2007 Teilen Geschrieben 6. Dezember 2007 Falls Du z.B. Apache als Webserver nutzt und deine Dateien in einem separaten Verzeichnis liegen, könntest du z.B. mittels einer .htaccess Datei den Webserver schon dazu bringen, die Dateitypen als application/octet-stream auszugeben, womit diese auch zum Download angeboten werden. Beispiel eines solchen .htaccess Eintrags: AddType application/octet-stream .pdf Anmerkung am Rande: Bei dieser (und auch bei deiner PHP Variante) ist es vom Browser abhängig ob er das auch wirklich tut. IE5 unter Windows NT z.B. hat (damals zumindest) dies bei manchen Dateitypen ignoriert und diese trotzdem im Browser angezeigt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 7. Dezember 2007 Teilen Geschrieben 7. Dezember 2007 Anmerkung am Rande: Bei dieser (und auch bei deiner PHP Variante) ist es vom Browser abhängig ob er das auch wirklich tut. Es ist immer vom Client abhängig, wie der die empfangenen Daten verarbeitet Lynx stellt die Seiten z.B. anders dar als der IE Aber die Methode mit dem Attachment ist die offiziell richtige Methode um dem Client zu signalisieren, das was da kommt soll nicht im Dokument angezeigt werden. Wie der das dann auslegt, darauf hat nur der Cliententwickler einfluß. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gurkenpapst Geschrieben 7. Dezember 2007 Teilen Geschrieben 7. Dezember 2007 Es ist immer vom Client abhängig, wie der die empfangenen Daten verarbeitet Lynx stellt die Seiten z.B. anders dar als der IE [...] Vollkommen richtig, wollte nur separat darauf aufmerksam machen das dies auch wissentlich falsch gemacht wird/wurde und somit auf den Unterschied zwischen Soll und Ist separat hinweisen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.