I think sen sonra bir boşluk gerekebilir attachment;
:
header("Content-Disposition: attachment; filename=$filename");
Bu işe yaramazsa, dahil olmak üzere, this article içinde bazı noktaları göz atın:
- IE 6.0, işler çoğunlukla işe, ama aynı zamanda kurulum Cache-Control ise: no-cache, senin önerdiğin dosya (! Ve tipi) IGNORED edilecektir. Güvenlik ve convienence arasında seçim yapmak zorunda ise bir serseri. Tabii ki, güvenlik kazanır.
- 6.0 dahil IE hemen hemen tüm sürümleri, üzerinde, bazen tarayıcı yerine Content-Bırakma başlığının adres çubuğuna dosya adını kullanacak ve IE5.5SP2 ile UseCDFileName kayıt defteri anahtarını değiştirmek için beklenen, Q303750 bakın. Bu Ie6.0sp1 ile tespit edildi.
EDIT: İşte doğrudan benim uygulamanın kaynaktan kopyalanmış, kullandığım kod. Bu daha iyi çalışır varsa bana bildirin ...
function forceDownload($filename,$mime=false,$downloadName=false)
{
if(file_exists($filename) && is_readable($filename))
{
if(!$mime) $mime = DFStdLib::determineMimeType($filename);
if(!$expire) $expire = DFStdLib::HOUR_IN_SECONDS;
if(!$downloadName) $downloadName = basename($filename);
header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($filename)).' GMT', true, 200);
header('Cache-Control: no-cache',true);
header('Pragma: Public',true);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT',true);
header('Content-Length: '.filesize($filename),true);
header("Content-Type: {$mime}",true);
header("Content-disposition: attachment; filename=$downloadName",true);
readfile($filename);
exit();
}
else
{
header('HTTP/1.1 404 Not Found',true,404);
echo "<html><head><title>Not Found</title></head><body>The file was not found.</body></html>";
exit();
}
}
Davanız için kullanım olacaktır:
forceDownload('/example.pdf','application/pdf','quickquote.pdf');
Ayrıca DFStdLib::HOUR_IN_SECONDS
3600
olarak değiştirin ve kendi determineMimeType
fonksiyonu yazmak veya silmek o satır ve $mime
argüman yapmak gerekir Gerekli ...