Ich mache eine Dateifreigabe-Website für den Spaß. Ich versuche es so zu machen, dass wenn ich den Download drücke, der Download startet. Anstatt nur ein Link zu /files/$file
im Versuch, eine Header-Weiterleitung zu tun:php header herunterladen redirect
download.php
/**
* File Download
*/
$query = mysql_query("SELECT id,name,desc FROM files WHERE id = ".intval($_GET['id']));
$row = mysql_fetch_assoc($query);
$file = $row['name'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
Filename: <?=$row['name']?>
Desc: <?=$row['desc']?>
<a href="#">Download this file</a>
Im hier stecken, was soll ich als nächstes tun?
danke
Was ist das Problem? –
Beachten Sie, dass "readfile und fpassthru ungefähr 55% langsamer sind als eine Schleife mit feof/echo fread". nach jemandem auf php.net –
@Alex L: Wow, wirklich? Ich dachte, ReadFile wäre schneller als es könnte mmap ... Haben Sie das jemals selbst getestet? – Josh