Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Проблема с отдачей файла через header

Сообщения:  [1-7] 

 
 автор: selma   (11.03.2011 в 02:32)   письмо автору
 
   для: Trivium   (10.03.2011 в 15:14)
 

Точно!!! как я забыла про readfile...где то читала, что он потребляет больше серверных рессурсов (если не так, было бы полезно почитать) НО Главное работает отлично! Спасибо Trivium

  Ответить  
 
 автор: Trivium   (10.03.2011 в 15:14)   письмо автору
 
   для: selma   (10.03.2011 в 01:54)
 

В мануале есть пример вывода с использованием функции readfile: http://ua2.php.net/manual/en/function.readfile.php

  Ответить  
 
 автор: selma   (10.03.2011 в 01:54)   письмо автору
 
   для: cheops   (09.03.2011 в 11:01)
 

называла даже mt_rand(9,999); результат тот же, ума не приложу что не так....

  Ответить  
 
 автор: cheops   (09.03.2011 в 11:01)   письмо автору
 
   для: selma   (09.03.2011 в 02:02)
 

Вы присваиваете filename имя файла с пробелами и русскими буквами, попробуйте сформировать имя без них - ситуация не меняется?

  Ответить  
 
 автор: selma   (09.03.2011 в 02:02)   письмо автору
 
   для: sim5   (05.03.2011 в 04:21)
 

$arr['linka'] = htmlspecialchars($arr['linka']); Это на всякий случай (без этого тоже НЕ работает)

header("Content-Disposition: attachment; filename=Файл скачан: (".date("H-i-s d.m.y").").".$aplic[1]); Отдаю файл и присваиваю свое имя.

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

  Ответить  
 
 автор: sim5   (05.03.2011 в 04:21)   письмо автору
 
   для: selma   (05.03.2011 в 03:16)
 

$arr['linka'] = htmlspecialchars($arr['linka']);
header("Content-Disposition: attachment; filename=Файл скачан: (".date("H-i-s d.m.y").").".$aplic[1]);

Это что такое?

  Ответить  
 
 автор: selma   (05.03.2011 в 03:16)   письмо автору
 
 

Всем здрасте!

есть ссылка вида: file.php?id=#ID

где ID - идентификационный номер на ссылку файла в БД (ссылка на файл в виде: имя_файла.расширение)

CREATE TABLE IF NOT EXISTS `table_link` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `linka` varchar(30) CHARACTER SET utf8 NOT NULL,
  `times` varchar(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6;

--
-- Дамп данных таблицы
--

INSERT INTO `table_link` (`id`, `linka`, `times`) VALUES
(1, 'vj4cPe1A4U.doc', '1296031983'),
(2, 'wcN5YVYlTk.doc',  '1296031983'),
(3, 'IdI3miZOaw.doc',  '1296031983'),
(4, '2z94SiJXzs.doc', '1296031983'),
(5, 'UTcYqkuAv3.doc', '1296032387');


после перехода по ссылке в файле file.php


<?
if(isset($_GET['id']) && is_numeric($_GET['id']))
  {
  include (
'connect.php'); // Соединяемся с БД 
  //Выбираем нужную ссылку на файл
  
$sql mysql_query("SELECT * FROM `table_link` WHERE `id`='".intval($_GET['id'])."' LIMIT 1");
  
$arr mysql_fetch_assoc($sql);
  
$arr['linka'] = htmlspecialchars($arr['linka']);
  
//получаем путь и имя файла 
  
$fp realpath("docs/".$arr['linka']);
//читаем файл 
  
if (file_exists($fp))
    {
    
$f fopen($fp'rb'); 
    
//Определяем MIME тип исходя из ссылки (думаю в будущем определять сам файл на тип)
    
$aplic explode('.',$arr['linka']);
    if (
$aplic[1]=='doc' or $aplic[1]=='rtf')  $ap 'application/msword';
    elseif (
$aplic[1]=='xls')  $ap 'application/x-msexcel';
    elseif (
$aplic[1]=='jpe' or $aplic[1]=='jpeg' or $aplic[1]=='jpg')  $ap 'image/jpeg';
    
//тип файла  
    
header('Content-Type: '.$ap);
    
//размер файла  
    
header("Content-Length: ".filesize($fp)); 
    
//имя файла  
    
header("Content-Disposition: attachment; filename=Файл скачан: (".date("H-i-s d.m.y").").".$aplic[1]); 
    
//выводим файл пользователю  
    
fpassthru($f);  
    exit();  
    }
  else { echo 
"Такого файла не существует!"; }
  }
else { echo 
"Ссылки на файл не существует!"; }
?>


Проблема: Размер файла и его тип определяет верно, а вот Содержимое DOC файлов сохраняет в крякозябрах...подскажите причины

  Ответить  

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования