Toon posts:

[php,html]file download

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb nu deze code, die werkt . Het enige probleem is dat IE en Opera blijkbaar niet weten hoe groot die file is en "unknow" aangeven.


Hoe kan ik dat oplossen?

function download($ID){
$filename=lookupName($ID,$radiolink) . ".mp3";

header("Content-type: application/mp3");
header("Content-Disposition: attachment; filename=" . $filename);
header("Content-length=" . filesize($size));
header("Cache-control: private");

$fp = fopen($filename, 'r');
fpassthru($fp);
fclose($fp);
}

  • wustenveld
  • Registratie: Februari 2002
  • Laatst online: 08-08 17:31
probeer eens
header("Content-size:" . filesize($size));

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Door filesize van $filename te nemen, en niet van $size (dat zo op het eerste gezicht een lege variabele is). Gesteld dat $filename een bestaande file op je server is.
Als $size de grootte van je file bevat moet je die niet door filesize halen, maar zelf doorsturen.
Waarschijnlijk snap je nog niet helemaal hoe functies en variabelen werken en anders moet je wat doen aan de naamgeving van je variabelen. :)

http://www.php.net/manual/

Verwijderd

Topicstarter
Hmm, ik had precies wat verkeerde code gepast.

function download($ID,$radiolink){

$fileName=lookupName($ID,"file",$radiolink) . ".mp3";
$downloadName=lookupName($ID,"download",$radiolink) . ".mp3";
header("Content-type: application/mp3");
header("Content-Disposition: attachment; filename=" . $downloadName);
header("Content-Length: " . filesize($downloadName));
header("Cache-control: privat
header("Cache-control: private");

$fp = fopen($fileName, 'r');
fpassthru($fp);
fclose($fp);
}

Ik zie wel hier http://www.w3.org/Protoco...aders.html#content-length dat het een integer moet zijn.

Zou het door een overflow kunnen zijn (files zijn 100 mb)?

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Ehm, je moet wel de filesize van de file die je wil laten downloaden opgeven...
Dus in plaats van filesize($downloadName) moet je filesize($fileName) doen.

Lees die manual nou.

Trouwens, als het een "overflow" (lees: een te groot getal) had geweest had je dat toch wel zelf kunnen opzoeken? Dat soort dingen wordt gedocumenteerd weet je...

Verwijderd

Topicstarter
sorry , Ericston, je had gelijk, ik was effe te snel. Het was gewoon ff verkeerde variabele.

Dank je, Ericston

Hier de uiteindelijke code voor moest iemand met de search hier terecht komen:

header("Content-type: application/mp3");
header("Content-Disposition: attachment; filename=" . $downloadName);
header("Content-Length: " . filesize($fileName));

header("Cache-control: private");

$fp = fopen($fileName, 'r');
fpassthru($fp);
fclose($fp);


<er mag volgens mij hier een slotje op>
Pagina: 1