Burada birkaç mesajları okuduktan sonra diğerleri bir demet bir karışıklık nevi bu işlevi formüle:
function outputFile( $filePath, $fileName, $mimeType = '' ) {
// Setup
$mimeTypes = array(
'pdf' => 'application/pdf',
'txt' => 'text/plain',
'html' => 'text/html',
'exe' => 'application/octet-stream',
'zip' => 'application/zip',
'doc' => 'application/msword',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
'gif' => 'image/gif',
'png' => 'image/png',
'jpeg' => 'image/jpg',
'jpg' => 'image/jpg',
'php' => 'text/plain'
);
// Send Headers
//-- next line fixed as per suggestion --
header('Content-Type: ' . $mimeTypes[$mimeType]);
header('Content-Disposition: attachment; filename="' . $fileName . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
header('Cache-Control: private');
header('Pragma: private');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
readfile($filePath);
}
Böyle bir şey (diğer kod sürü dışarı çıkardı) yapan bir php sayfası (file.php) var:
// I run this thru a safe function not shown here
$safe_filename = $_GET['filename'];
outputFile ( "/the/file/path/{$safe_filename}",
$safe_filename,
substr($safe_filename, -3) );
Çalışması gerekir gibi görünüyor, ve neredeyse yok, ama aşağıdaki sorunları yaşıyorum:
Onun bir metin dosyası, ben metin belgesinde ilk harfi olarak garip bir sembolü alıyorum zaman
Ne zaman onun bir kelime doc, bunun (muhtemelen aynı ilk bit veya bayt atma şeyler kapalı) bozuk.
Tüm diğer dosya türleri bozuk olacağını tahmin - hatta onları denemedim
Herhangi bir yanlış yapıyorum ne fikir?
Teşekkürler -
Önerdiği gibi UPDATE: kod satırını değişti - hala aynı sorun.