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

Форум PHP

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

 

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

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

тема: Скачать файл без помощи браузера

Сообщения:  [1-10]   [11-12] 

 
 автор: Evgen   (11.02.2011 в 20:23)   письмо автору
 
   для: Trianon   (10.02.2011 в 13:14)
 

Да я, собственно, ничего и не требовал от Вас =)
Ответил только на "откуда списано". Использую этот "списанный" код (после обдумывания) для граббера html-страниц. Работает всё отменно!
Вопрос возник, когда не знал, как скачивать файлы из инета на сервер. Думал, что должно быть нечто подобное вышеприведенному фрагменту кода.
Поэтому: повторное, искреннее спасибо!
Респект авторам (и книги и форума).

   
 
 автор: Trianon   (10.02.2011 в 13:14)   письмо автору
 
   для: Evgen   (10.02.2011 в 10:39)
 

>>PS. "Неправильно применеы поля заголовка. Списаны откуда-то совершенно бездумно..."
> "РНР5 на примерах", М. Кузнецов, И. Симдянов, С. Голышев, 2006, стр.335

Ну и что с того? Разве это повод списывать код без того, чтобы вникать в него?

Из аннотации книги "PHP5 на примерах".
...используемые в книге примеры взяты из реальтной практики Web-программирования и в большинстве своем являются ответами на многочисленные вопросы посетителей форума PHP на сайте www.softtime.ru? созданного и поддерживаемого авторами, а также на вопросы читателей их предыдущих книг.

Так что все вполне закономерно - идея требовать с авторов книги ответ за работоспособность кода в откликах на форуме, которые давались его посетителями - на мой взгляд, крайне сомнительная идея.

   
 
 автор: Evgen   (10.02.2011 в 10:39)   письмо автору
 
   для: Trianon   (09.02.2011 в 10:43)
 

To cheops & Trianon
Всё заработало! Большое спасибо за помощь!
Подействовала критика - "не трогайте fsockopen() не разобравшись в протоколе...", - принял как руководство к действию =)
Поэтому пришлось разобраться с функцией copy( ), всё отлично работает на сервере!

PS. "Неправильно применеы поля заголовка. Списаны откуда-то совершенно бездумно..." - "РНР5 на примерах", М. Кузнецов, И. Симдянов, С. Голышев, 2006, стр.335

   
 
 автор: Trianon   (09.02.2011 в 10:43)   письмо автору
 
   для: Evgen   (09.02.2011 в 04:13)
 

функция fread применена правильно.
Неправильно применеы поля заголовка. Списаны откуда-то совершенно бездумно.

Неоднократно говорил всем, не трогайте fsockopen() не разобравшись в протоколе.
Протокол http сложный, а не простой, как многие пытаются показать.
Тем более, что в php клиентская его часть реализована в обертках(wrappers) файловых функций и в инструменте curl,
а значит можно воспользоваться уже написанным.


Что значит "а как к нему привязать header, если скрипт лежит на сервере"?
Что за header? Почему его требуется к чему-то вязать?

   
 
 автор: Evgen   (09.02.2011 в 04:13)   письмо автору
 
   для: cheops   (08.02.2011 в 15:55)
 


<?
function get_content ($host_name$path)
         {
         global 
$text;

         
$text "";
         
$fp fsockopen ($host_name80$errno$errstr30);
         if (!
$fp)
         {
         exit(
"$errno ($errstr)");
         }
         else
         {
         
$headers "GET $path HTTP/1.1\r\n";
         
$headers .= "Host: $host_name\r\n";
         
$headers .= "Accept: *\r\n";
         
$headers .= "Accept-Charset: *\r\n";
         
$headers .= "Accept-Encoding: deflate\r\n";
         
$headers .= "Accept-Language: ru\r\n";
         
$headers .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
         
$headers .= "Connection: Close\r\n\r\n";

         
fwrite ($fp$headers);
               while (!
feof($fp))
               {
               
//$text .= fgets ($fp, 1024);
               
$text .= fread ($fp1024);
               }
         
fclose ($fp);
         }
         return;
       }
?>


Файл (*.jpg) скачивается, сохраняется, размер сохраненного файла соответствует источнику, но файл не открывается ("Unknown Format").
Подозреваю, что функции fgets (fread) либо неуместны, либо неправильно применены...

PS. Вариант COPY ( ) работает, если запускаю его на своей машине (т.е. заголовок в сеть шлет мой браузер), а как к нему привязать header, если скрипт лежит на сервере - не понятно ... уже голову сломал....

   
 
 автор: Evgen   (08.02.2011 в 16:06)   письмо автору
 
   для: cheops   (08.02.2011 в 15:55)
 

ОК! Спасибо, бум пробовать!

   
 
 автор: cheops   (08.02.2011 в 15:55)   письмо автору
 
   для: Evgen   (08.02.2011 в 15:37)
 

Примерно так
<?php
  copy
("http://site.dev/image.gif""image.gif");
?>

Первый параметр - сетевой адрес файла, а второй - локальный путь, куда этот файл должен быть сохранён.

   
 
 автор: Evgen   (08.02.2011 в 15:37)   письмо автору
 
   для: Trianon   (08.02.2011 в 15:29)
 

copy( ) для файла на удаленной машине? Как это?


evgen (08.02.2011 в 15:04) ...ввожу адрес файла для скачки, файл скачивается на мой сервер...

   
 
 автор: Trianon   (08.02.2011 в 15:29)   письмо автору
 
   для: Evgen   (08.02.2011 в 15:11)
 

В самом примитивном варианте это проделывается вызовом функции copy().
И от формата файла не зависит.

   
 
 автор: Evgen   (08.02.2011 в 15:11)   письмо автору
 
   для: cheops   (08.02.2011 в 15:07)
 

Сохраняем не на локальной машине, а на сервере. Запускаю скрипт с сервера, показываю где взять файл, а он его берет и у себя (на сервере) сохраняет.

PS. Удивлен и признателен за мгновенный ответ =)

PPS. Форматы файлов - zip, rar, exe и тп

   

Сообщения:  [1-10]   [11-12] 

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

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