[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: скачивание файлов
igor2011
Нужно организовать скачивание файлов на сайте.
использую такой код:

header("Content-type: application/force-download; filename: $file");
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file1));
header('Location: ' . $file1);


где $file - имя файла, $file1 - путь
Скачивается не файл $file, а страница, на которой этот сценарий. Если я перехожу по ссылке с путем до файла, то он открывается в браузре. Но мне-то нужно скачать именно этот файл и открыть его на локальном компьютере.

Помогите, пожалуйста. Что не так?



Спустя 1 час, 17 минут, 48 секунд (25.10.2011 - 05:47) jetistyum написал(а):
заголовок Location "говорит" браузеру открыть данный путь, если у пользователя на компе нет такого пути - не откроет.
Одна минута гугления и ты найдешь готовый код.

Спустя 7 часов, 10 минут, 11 секунд (25.10.2011 - 12:57) igor2011 написал(а):
Я уже три дня глумлюсь. Если есть путь - открывается файл, а не закачивается. Если нет пути - закачивается файл страницы. Подскажите, что делать.

Спустя 12 минут, 11 секунд (25.10.2011 - 13:09) Xes написал(а):
я знаю что такие настройки можно сделать в php.ini, тебе он доступен?

Спустя 19 часов, 27 минут, 16 секунд (26.10.2011 - 08:37) Kuliev написал(а):
igor2011
Если вы хотите, чтобы пользователю задавался вопрос о сохранении данных, высылаемых вами, таких как сгенерированный PDF-файл, вы можете использовать шапку Content-Disposition для предоставления рекомендуемого файла и форсировать отображение браузером диалога save.


<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=downloaded.pdf");

/* ... вывод pdf-файла ... */

Спустя 4 часа, 7 минут, 21 секунда (26.10.2011 - 12:44) jetistyum написал(а):
нужно еще сказать что так же необходимо после передачи хедеров передавать и сам контент файла

Спустя 1 минута, 16 секунд (26.10.2011 - 12:45) jetistyum написал(а):
вот пример. нарыл за 1,5 минуты


function file_download($filename, $mimetype='application/octet-stream') {
if (file_exists($filename)) {
// Отправляем требуемые заголовки
header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK');
// Тип содержимого. Может быть взят из заголовков полученных от клиента
// при закачке файла на сервер. Может быть получен при помощи расширения PHP Fileinfo.

header('Content-Type: ' . $mimetype);
// Дата последней модификации файла
header('Last-Modified: ' . gmdate('r', filemtime($filename)));
// Отправляем уникальный идентификатор документа,
// значение которого меняется при его изменении.
// В нижеприведенном коде вычисление этого заголовка производится так же,
// как и в программном обеспечении сервера Apache

header('ETag: ' . sprintf('%x-%x-%x', fileinode($filename), filesize($filename), filemtime($filename)));
// Размер файла
header('Content-Length: ' . (filesize($filename)));
header('Connection: close');
// Имя файла, как он будет сохранен в браузере или в программе закачки.
// Без этого заголовка будет использоваться базовое имя скрипта PHP.
// Но этот заголовок не нужен, если вы используете mod_rewrite для
// перенаправления запросов к серверу на PHP-скрипт

header('Content-Disposition: attachment; filename="' . basename($filename) . '";');
// Отдаем содержимое файла
echo file_get_contents($filename);
} else {
header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
header('Status: 404 Not Found');
}
exit;
}

Спустя 23 часа, 31 минута, 20 секунд (27.10.2011 - 12:17) igor2011 написал(а):
Спасибо всем кто откликнулся. Все работает. Мне действительно нужна была ваша помощь
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.