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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Загрузка файла с сервера
 
 автор: Freddie_X   (28.08.2006 в 01:34)   письмо автору
 
 

Вот код скрипта скачивания:

<?php
$file 
"archive/files/".$_GET['d']."/".$_GET['f'];
if(
file_exists($file))
{
$str "Content-Disposition: attachment; filename=" .$_GET['f'];
header($str);
header("Content-type: application/octet-stream");
echo 
file_get_contents ($file);
}
?>

1. Он работает, но с ошибкой. При загрузке файл имеет расширение *.htm и тип text/html, хотя должен иметь расширение *.rar.
2. На локальной машине работает, как надо, но на удалённом сервере не работает.
Вопрос: Что мне ещё надо добавить для полной работоспособности скрипта?

   
 
 автор: Unkind™   (28.08.2006 в 02:02)   письмо автору
 
   для: Freddie_X   (28.08.2006 в 01:34)
 

1. Расширение *.rar должно быть тока тогда, когда файл, который вы запрашиваете тоже такое же расширение имеет.
2. Вроде заголовок типа файла должен быть перед другими...

   
 
 автор: Trianon   (28.08.2006 в 09:34)   письмо автору
 
   для: Freddie_X   (28.08.2006 в 01:34)
 


$str  = '"' . $_GET['f'] . '"';
header("Content-type: application/octet-stream; name=$str"); 
header("Content-Disposition: attachment; filename=$str");

   
 
 автор: Freddie_X   (28.08.2006 в 11:06)   письмо автору
 
   для: Trianon   (28.08.2006 в 09:34)
 

Не помогает.

   
 
 автор: Trianon   (28.08.2006 в 11:16)   письмо автору
 
   для: Freddie_X   (28.08.2006 в 11:06)
 

Как выглядит строка вызова скрипта?

   
 
 автор: Freddie_X   (28.08.2006 в 11:34)   письмо автору
 
   для: Trianon   (28.08.2006 в 11:16)
 

download.php?d=files&f=file.rar

   
 
 автор: Trianon   (28.08.2006 в 12:27)   письмо автору
 
   для: Freddie_X   (28.08.2006 в 11:34)
 

Советую проверить, есть ли файл. А полный путь писать от корня сервера.

   
 
 автор: Freddie_X   (28.08.2006 в 12:52)   письмо автору
 
   для: Trianon   (28.08.2006 в 12:27)
 

Если прописывааю полный путь (http://www.mysite.ru/archive/files/......), мне пишет, что ттакого файла нет! (я дописал к коду скрипта

else echo "Такого файла не существует!";
)
Я в адресной строке написал прямой путь к файлу - мне выдало окно "сохранить" - как надо. =\
Что модет быть не так? Я ума не приложу! =\\\

   
 
 автор: cheops   (28.08.2006 в 12:56)   письмо автору
 
   для: Freddie_X   (28.08.2006 в 12:52)
 

Это сетевой путь - Trianon имеет ввиду абсолютный путь от корня диска /usr/.../archive/files/...

   
 
 автор: Freddie_X   (28.08.2006 в 13:05)   письмо автору
 
   для: cheops   (28.08.2006 в 12:56)
 

Так я испытываю на удалённом сервере - на локальной машине работает всё хорошо.

   
 
 автор: cheops   (28.08.2006 в 13:16)   письмо автору
 
   для: Freddie_X   (28.08.2006 в 13:05)
 

Узнайте путь к скрипту на удалённой машине при помощи функции phpinfo()
<?php
  phpinfo
();
?>

   
 
 автор: Freddie_X   (28.08.2006 в 13:42)   письмо автору
 
   для: cheops   (28.08.2006 в 13:16)
 

Я случайно наткнулся на это, мне выдала aeyrwbz phpinfo(); :
HTTP Headers Information
Accept: application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1
Тут нет aplication/x-rar-compressed. Может быть из-за этого и не качает архивы?

   
 
 автор: Trianon   (28.08.2006 в 13:49)   письмо автору
 
   для: Freddie_X   (28.08.2006 в 13:42)
 

*/*;q=0.1 - включает в себя любые типы. В т.ч. и рар.
Какая разница, что воспринимает клиент, если Вы файл на сервере не в состоянии найти?

   
 
 автор: Freddie_X   (28.08.2006 в 14:38)   письмо автору
 
   для: Trianon   (28.08.2006 в 13:49)
 

Ну я указал

$_SERVER['DOCUMENT_ROOT']."/archive/files/".$_GET['d']."/".$_GET['f'];
в коде скрипта, но по-прежнему имя файла остаётся file.htm.
А в phpinfo(); указано, что $_SERVER['DOCUMENT_ROOT'] = /home/users/m/mysite/docs

   
 
 автор: Trianon   (28.08.2006 в 15:22)   письмо автору
 
   для: Freddie_X   (28.08.2006 в 14:38)
 

если вывети $file - там получается ожидаемое имя с путем или нет?

   
 
 автор: Freddie_X   (28.08.2006 в 16:47)   письмо автору
 
   для: Trianon   (28.08.2006 в 15:22)
 

Я что-то изменил, таперь выводятся каракули.
Да, путь полностью совпадает с нужным

   
Rambler's Top100
вверх

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