Такая проблема может возникнуть и с другими типами файлов (doc,  pdf, xls, jpg, gif и т.д.), будет запускаться, ассоциируемая с этим типом файла,  программа. А не всегда это удобно и нужно. 
 
PHP скрипт для скачивания файлов без запуска ассоциаций: 
dl_save.php 
CODE:<?php 
$filename = $_GET['filename']; 
  
 // нужен для Internet Explorer, иначе Content-Disposition игнорируется 
if(ini_get('zlib.output_compression')) 
  ini_set('zlib.output_compression', 'Off'); 
  
$file_extension = strtolower(substr(strrchr($filename,"."),1)); 
  
if( $filename == "" ) 
{ 
          echo "ОШИБКА: не указано имя файла."; 
          exit; 
} elseif ( ! file_exists( $filename ) ) // проверяем существует ли указанный файл 
{ 
          echo "ОШИБКА: данного файла не существует."; 
          exit; 
}; 
switch( $file_extension ) 
{ 
          case "pdf": $ctype="application/pdf"; break; 
          case "exe": $ctype="application/octet-stream"; break; 
          case "zip": $ctype="application/zip"; break; 
          case "doc": $ctype="application/msword"; break; 
          case "xls": $ctype="application/vnd.ms-excel"; break; 
          case "ppt": $ctype="application/vnd.ms-powerpoint"; break; 
          case "mp3": $ctype="audio/mp3"; break; 
          case "gif": $ctype="image/gif"; break; 
          case "png": $ctype="image/png"; break;   
          case "jpeg": 
          case "jpg": $ctype="image/jpg"; break; 
          default: $ctype="application/force-download"; 
} 
header("Pragma: public");  
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); // нужен для некоторых браузеров 
header("Content-Type: $ctype"); 
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" ); 
header("Content-Transfer-Encoding: binary"); 
header("Content-Length: ".filesize($filename)); // необходимо доделать подсчет размера файла по абсолютному пути 
readfile("$filename"); 
exit(); 
?>   
 
Данный скрипт поможет вам управлять скачиванием файлов с вашего сайта. Не допускать браузерам запускать ассоциированную программу с данным файлом по умолчанию (mp3, doc, pdf и т.д.),  а всегда спрашивать у пользователя что нужно делать (открыть или сохранить). 
 
1) Создайте файл dl_save.php скопируйте туда код. 
 
2) Ссылку на скачивания файла оформлять нужно (примерно) так: 
CODE:<a href="dl_save.php?filename=file.mp3">Скачать</a>   
 
Где file.mp3 – заменяйте своим файлом, если нужно, прописывайте полный путь к файлу (и путь к dl_save.php). 
 
Можно также использовать редирект: 
CODE:header("Location:  dl_save.php?filename=file.mp3");   
(Добавление) 
Еще как вариант нужно для скачивания файла просто добавить в ссылке атрибут "download": 
CODE:<a href="file.mp3" download="имя-файла.mp3">Скачать</a>   
И не нужно никаких скриптов. |