Допустим на своём сайте вы распространяете документы MS Office, текстовые файлы, и другие файлы.

Если на web странице выложить ссылку на один из таких файлов, при нажатии файл откроется в окне браузера, но не будет закачиваться.

А вот как сделать, так что бы при нажатии на ссылку файл скачивался, читайте дальше.

Допустим все файлы хранятся в простой таблице. А именно.

Имя файла.
Дата создания.
Размер.
Mime тип.

CREATE TABLE files (id int(30) auto_increment,
file_name text(255),
date datetime DEFAULT '0000-00-00 00:00:00',
size int(30) NOT NULL,
mime_tip text(80) NOT NULL,
PRIMARY KEY (id));

При нажатии на ссылку сохранить, через id выбираем нужный файл из нашей БД. После чего посылаем браузеру клиента заголовки, в которых говорится, передаваемый файл необходимо сохранить.

Вот как это нужно сделать.

И так получаем через id. Делаем выборку из БД.

$query=mysql_query("SELECT * FROM files WHERE id='{$_GET['id']}'") or die (mysql_error()); //Производим выборку

$result=mysql_num_rows($query); // Получаем количество записей.

Если empty($result) = 0. показываем ошибку.

echo"Такой файл не найден.";

Если всё ок, делаем выборку.

$rows=mysql_fetch_array($query);

Формируем нашу ссылку:

$fpath="Полный URL путь к файлу/$rows['file_name']}";

Получаем имя файла их $fpath.

$file = basename($fpath);

Отправляем заголовки клиенту.

header("Cache-Control: ");
header("Pragma: ");
header('Expires: 0');
header("Content-type: ".$rows['mime_tip']); // сообщаем mime тип
Header("Accept-Ranges: bytes"); //Указываем что размер файла будет в байтах
Header("Content-Length: ".$rows['size']); //Передаём размер
header("Content-Disposition: attachment; filename=".$file); //указываем имя вложения
$fdl = fopen($fpath, "r"); //Открываем файл
fpassthru($fdl);
fclose($fdl);
header ("Connection: close");

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



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

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

Вы должны войти, чтобы оставить комментарий.