Gelöst - Dateidownload: Restdauer unbekannt

hallo Zusammen!

Ich benutze derzeit ein Download-Skript auf meiner Homepage mit folgendem Code:

<?php header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="P1_V5.pdf"'); header('Content-Length: 2372931'); header('Pragma: no-cache'); header('Expires: 0'); readfile('P1_V5.pdf'); ?>

Es kann auch prima alles heruntergeladen werden, jedoch schaffen es meine Browser trotz Content-Length nicht, eine Restdauer zu berechnen, da Sie die maximale Dateigröße nicht zu kennen scheinen…
Der Fehler tritt bei aktuellem Opera, IE und Firefox auf…

Benutzt man Downloadmanager wie Flashget oder Orbit, dann wir die Gesamtdateilänge korrekt bestimmt…

könnt ihr mir sagen, woran das liegen könnte?

Verwende doch mal die echte Dateigröße und transfer-encoding so wie hier oder hier

Danke für die schnelle Antwort^^

Die Dateigröße ist die echte… ich habe lediglich den inhalt für filesize hingeschrieben, um Probleme, die damt in Verbindung stehen, ausräumen zu können… Leider funktioniert es mit filesize auch nicht…

header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="P1_V5.pdf"'); header("Content-Transfer-Encoding: binary"); header('Content-Length: '.filesize("P1_V5.pdf")); header("Pragma: no-cache"); header("Expires: 0"); readfile('P1_V5.pdf');

Leider funktioniert dieses Skript auch nicht, was die Restdauer angeht…

Eigentlich müsste das funktionieren. Versuch doch sonst mal ein paar der header-Befehl auszukommentieren. vll ist da irgendein Widerspruch drinne.

content-type, disposition und length sollte eigentlich ausreichen.

tut mir leid, aber wenn ich folgenden Code benutze, erhalte ich trotz vollständiger Datei keine Restwartezeit…

<?php header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="P1_V5.pdf"'); //header("Content-Transfer-Encoding: binary"); header('Content-Length: '.filesize("P1_V5.pdf")); //header("Pragma: no-cache"); //header("Expires: 0"); readfile('P1_V5.pdf'); ?>

vielleicht ist das auch ein Interneteinstellungsproblem…
seht ihr eine Restdauer?

sword.bplaced.net/uni/download2.php

sieht komplieziert aus^^ (ich meine die pdf)

nein ich sehe auch keine Restdauer

lg max

Kompliziert ist relativ, eigentlich ist das sogar ein ziemlich einfacher Versuch. :smiley: Aber ich wundere mich, warum man das Protokoll mit der Hand schreibt. Das würde bei uns kein Assistent annehmen.

Aber Restdauer sehe ich auch keine.

Ich glaube, ich habe das Problem gefunden: bplaced (auch square7) sendet PHP-dateien immer mit gzip komprimiert und gibt keine Übertragungsgröße an. Die Browser erlauben das, deine Downloadprogramme aber nicht, diese fordern unkomprimierte Daten an, dann bleibt auch der Header mit der Größe erhalten. Das kannst du z.B. damit sehen: web-sniffer.net/

Also für einen 15 jährigen realschüler ist das compliziert^^

aslo asu meiner sicht…
lg max

naja gut, ich bin jetzt von anderen voraussetzungen ausgegangen :smiley:

wir müssen das handschriftlich machen…

@progandy:
Was würde das für mich bedeuten? kann ich das irgendwie umgehen?
oder kann ich dann über bplaced überhaupt keine Restdauer erzeugen?

Ich wüsste nicht, wie du das umgehen kannst. Die Dauer kann nur angezeigt werden, wenn du die Datei direkt, ohne PHP-Skript herunterlädst denke ich.

Edit: Ich habe eine Möglichkeit gefunden aber ich bin mir nicht sicher, ob ich sie veröffentlichen darf.
Edit: Ach, egal. Sende einfach einen falschen Content-Encoding-header, z.B. header("Content-Encoding: plainbinary");

[code]<?php // Nur Name und Pfad anpassen
$filename = ‘extract.phps’;
$filepath = DIR;

$finfo = new finfo(FILEINFO_MIME_TYPE);
$filesize = filesize("$filepath/$filename");
$filemime = $finfo->file("$filepath/$filename");
header(“Expires: 0”);
header(“Cache-Control: must-revalidate, post-check=0, pre-check=0”);
header(“Cache-Control: private”,false);
header(“Content-Type: $filemime” );
header(“Content-Disposition: attachment; filename=”$filename";");
header(“Content-Transfer-Encoding: binary”);
header(“Content-Length: $filesize”);
header(“Content-Encoding: plainbinary”);
readfile("$filepath/$filename");
exit();[/code]

vielen dank für den Hinweis^^
Das funktioniert tatsächlich wunderbar^^
Und auch danke für die restlichen Header, die du in deinem Code-Beispiel angegeben hast.