О web-разработке
и даже немного больше...

Отдаем файлы на скачивание в Битрикс

skachivanieИногда при запросе некоторого файла в браузере необходимо передать его таким образом, чтобы пользователю было предложено сохранить этот файл на диск. В типовых случаях открывая, к примеру, PDF-файл по прямой ссылке, браузер пытается открыть его в своем окне, но как сделать так, чтобы можно было предложено сохранить этот файл на вашем компьютере?

Знаете ли вы или нет, но всё дело в заголовках ответа веб-сервера, которые посылаются браузеру в виде ответа на ваш запрос. Посылая нужные заголовки браузеру, можно инициировать появление окна с предложением для непосредственного скачивания файла. Рассмотрим пример. В примере, API битрикса главным образом используется для получения пути к файлу. Это говорит о том, что зная путь к файлу, можно сделать отправку его и без использования API битрикса.

<?
// подключаем API Bitrix
require_once($_SERVER['DOCUMENT_ROOT'] .
"/bitrix/modules/main/include/prolog_before.php");

// ID файла
$fileID = 123;

// получаем массив полей файла
$dwFile = CFile::GetFileArray($fileID);
	
	if ($dwFile){
		// путь до файла
		$file = $_SERVER['DOCUMENT_ROOT'].$dwFile['SRC'];
		
		// отправка
		header('Content-Description: File Transfer');
		header('Content-type: application/octet-stream');
		header('Content-Disposition: attachment; filename="'.$dwFile['FILE_NAME'].'"');
		header('Content-Transfer-Encoding: binary');
		header('Expires: 0');
		header('Cache-Control: must-revalidate');
		header('Pragma: public');
		header('Content-Length: '.filesize($file));
		readfile($file);

	} else echo 'Не удалось получить файл!';
?>
Опубликован: 19.03.2015 г.

См. также:

«Не удалось установить соединение с сервером. Проверьте …».
Получение Email-адреса покупателя в заказе (Bitrix D7)
Работа с URL-адресами в Bitrix D7
Работа с купонами в Bitrix API
Добавляем пункт меню для списков в админке Битрикс
Диалоговые окна в Bitrix API
Создание инфоблока при установке модуля
Создание копии корзины из заказа на Bitrix D7

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта