|
|
|
| Подскажите плз алгоритм!
На моем сервере лежит скрипт, запускаю его, ввожу адрес файла для скачки, файл скачивается на мой сервер. Всё просто! Казалось бы... но мысли, как это реализовать, пока не приходят =\
Скачка html страниц с отправкой заголовка, чтение, запись в файл и тп - работает без проблем. Но какая процедура с другими форматами и возможно большими размерами ..? Непонятно... | |
|
|
|
|
|
|
|
для: evgen
(08.02.2011 в 15:04)
| | Что-то не очень понятно, имеется в виду, чтобы файл не отображался браузером, а предоставлялось окно для его сохранения на машине пользователя? Или имеется в виду что-то другое? | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 15:07)
| | Сохраняем не на локальной машине, а на сервере. Запускаю скрипт с сервера, показываю где взять файл, а он его берет и у себя (на сервере) сохраняет.
PS. Удивлен и признателен за мгновенный ответ =)
PPS. Форматы файлов - zip, rar, exe и тп | |
|
|
|
|
|
|
|
для: Evgen
(08.02.2011 в 15:11)
| | В самом примитивном варианте это проделывается вызовом функции copy().
И от формата файла не зависит. | |
|
|
|
|
|
|
|
для: Trianon
(08.02.2011 в 15:29)
| | copy( ) для файла на удаленной машине? Как это?
evgen (08.02.2011 в 15:04) ...ввожу адрес файла для скачки, файл скачивается на мой сервер... | |
|
|
|
|
|
|
|
для: Evgen
(08.02.2011 в 15:37)
| | Примерно так
<?php
copy("http://site.dev/image.gif", "image.gif");
?>
|
Первый параметр - сетевой адрес файла, а второй - локальный путь, куда этот файл должен быть сохранён. | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 15:55)
| | ОК! Спасибо, бум пробовать! | |
|
|
|
|
|
|
|
для: cheops
(08.02.2011 в 15:55)
| |
<?
function get_content ($host_name, $path)
{
global $text;
$text = "";
$fp = fsockopen ($host_name, 80, $errno, $errstr, 30);
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 ($fp, 1024);
}
fclose ($fp);
}
return;
}
?>
|
Файл (*.jpg) скачивается, сохраняется, размер сохраненного файла соответствует источнику, но файл не открывается ("Unknown Format").
Подозреваю, что функции fgets (fread) либо неуместны, либо неправильно применены...
PS. Вариант COPY ( ) работает, если запускаю его на своей машине (т.е. заголовок в сеть шлет мой браузер), а как к нему привязать header, если скрипт лежит на сервере - не понятно ... уже голову сломал.... | |
|
|
|
|
|
|
|
для: Evgen
(09.02.2011 в 04:13)
| | функция fread применена правильно.
Неправильно применеы поля заголовка. Списаны откуда-то совершенно бездумно.
Неоднократно говорил всем, не трогайте fsockopen() не разобравшись в протоколе.
Протокол http сложный, а не простой, как многие пытаются показать.
Тем более, что в php клиентская его часть реализована в обертках(wrappers) файловых функций и в инструменте curl,
а значит можно воспользоваться уже написанным.
Что значит "а как к нему привязать header, если скрипт лежит на сервере"?
Что за header? Почему его требуется к чему-то вязать? | |
|
|
|
|
|
|
|
для: Trianon
(09.02.2011 в 10:43)
| | To cheops & Trianon
Всё заработало! Большое спасибо за помощь!
Подействовала критика - "не трогайте fsockopen() не разобравшись в протоколе...", - принял как руководство к действию =)
Поэтому пришлось разобраться с функцией copy( ), всё отлично работает на сервере!
PS. "Неправильно применеы поля заголовка. Списаны откуда-то совершенно бездумно..." - "РНР5 на примерах", М. Кузнецов, И. Симдянов, С. Голышев, 2006, стр.335 | |
|
|
|
|
|
|
|
для: Evgen
(10.02.2011 в 10:39)
| | >>PS. "Неправильно применеы поля заголовка. Списаны откуда-то совершенно бездумно..."
> "РНР5 на примерах", М. Кузнецов, И. Симдянов, С. Голышев, 2006, стр.335
Ну и что с того? Разве это повод списывать код без того, чтобы вникать в него?
Из аннотации книги "PHP5 на примерах".
...используемые в книге примеры взяты из реальтной практики Web-программирования и в большинстве своем являются ответами на многочисленные вопросы посетителей форума PHP на сайте www.softtime.ru? созданного и поддерживаемого авторами, а также на вопросы читателей их предыдущих книг.
Так что все вполне закономерно - идея требовать с авторов книги ответ за работоспособность кода в откликах на форуме, которые давались его посетителями - на мой взгляд, крайне сомнительная идея. | |
|
|
|
|
|
|
|
для: Trianon
(10.02.2011 в 13:14)
| | Да я, собственно, ничего и не требовал от Вас =)
Ответил только на "откуда списано". Использую этот "списанный" код (после обдумывания) для граббера html-страниц. Работает всё отменно!
Вопрос возник, когда не знал, как скачивать файлы из инета на сервер. Думал, что должно быть нечто подобное вышеприведенному фрагменту кода.
Поэтому: повторное, искреннее спасибо!
Респект авторам (и книги и форума). | |
|
|
|