MIDAV.RU

MIDAV.RU

Учусь делать сайты в свободное время .

Как заставить браузер скачивать файл

Просмотров: 4629Комментарии: 0
PHP & MySQL

Допустим Вам надо разместить на своем сайте некий файл и сделать так чтобы этот файл скачивался на компьюрер пользователя . Например есть у Вас текстовый файл по адресу site.ru/file.txt . И нужно чтобы пользователь его скачал . Делаете прямую ссылку на файл . Задача выполнена smile

Но почему то файл не скачивается а открывается браузером . На самом деле как конкретный браузер поступит с файлом зависит от настроек самого браузера . Так что , даже с одним и тем же файлом разные браузеры могут поступать по разному .

Можно попробовать запаковать файл в архив , например zip формата . С архивами браузеры как правило поступают одинаково , предлагают сохранить на компьютере . Заодно и траффик можно сэкономить

Но если этот способ Вам не подходит то можно сделать по другому . Для того чтобы заставить сохранить файл на компьютер , нужно послать браузеру соответствующий заголовок .

Создаем в корне сайта  вспомогательный файл download.php следующего содержания :

if ( isset($_GET['file']) ){
	$file		= $_GET["file"]; 
	$file_info	= pathinfo($file);
	$file_ext	= $file_info['extension'];
	$file_name	= $file_info['basename'];
	$ignore_ext = array ('php','html','xml','ini','css','js'); // игнорируемые файлы
	if(file_exists($file) and in_array($file_ext, $ignore_ext)!=1 )
	{
		switch($file_ext)
		{
			case "gif": $file_type="image/gif"; break;
			case "png": $file_type="image/png"; break;
			case "jpg": $file_type="image/jpg"; break;
			default: $file_type="application/force-download";
		}
		
		header('Content-type: '.$file_type); 
		header('Content-Disposition: attachment; filename=' . $file_name . ''); 
		readfile('' . $file . ''); 
		exit();
	}
	else
	{
		exit ("Неправильное имя файла !");
	}
}
else{
	exit('Файл не выбран !');
}

В список игнорируемых файлов записываем расширения файлов которые скачивать не надо . Дополнительно можете указать для нужный расширений миме тип , если он вам известен . Но это в принципе не обязятельно . И делаем такие ссылки на файлы которые нужно скачивать :

<a href="site.ru/download.php?file=нужный_файл">Скачать</a>

Пути к файлам естественно должны быть прописаны правильно .

Вот и все , задача выполнена .

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question


Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

     

  

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо со ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)