Forum Webscript.Ru
Программирование => PHP => Тема начата: .Sm@sH. от 19 Июня 2002, 23:52:24
-
Мне нужно сделать такой скрипт, который через простую форму получает ссылку на файло с другого сайта (типа, http://www.somehost.com/img/foto.jpg) и копирует его мне на сервак в заранее определенную папку.
Так конечно-же ничего не получается:
// Скрипт получает переменную $url с URL файла
copy($url, "мой путь");
В след. случае скрипт работает, но данные конечно-же записывает совсем не так как нужно (ведь это не текст уже...):
$url = "http://www.somehost.com/img/foto.jpg";
$f = fopen($url, "r");
$myf = fopen("dir/file.jpg", "w");
fwrite($myf, fread($f, 100000));
fclose($myf);
fclose($f);
Короче, можно ли такое вообще реализовать?:confused:
-
Можно:))
$file=file("http://lreal.km.ru");
Теперь в переменной $file(array по поему должен получиться)
Главная страница lreal.km.ru:)
А далее что угодно делай с это $file...
-
в примере к функции fsockopen тоже есть решение.
-
в примере к функции fsockopen тоже есть решение.
$fp = fsockopen ("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
\\n";
} else {
fputs ($fp, "GET / HTTP/1.0\\r\\nHost: [url]www.example.com\\r\\n\\r\\n[/url]");
while (!feof($fp)) {
echo fgets ($fp,128);
}
fclose ($fp);
}
Думаю ты об этом говоришь?
-
Да нет... не в том проблема...
Что ерез file() или через fsockopen() - не пашет... А знаете почему? Мне-же нужно фало прочитать, а потом записать себе на сервак... А fwrite() и fputs() работают только ч текстовыми файлами, а не с двочными (как например ЖэПэГЭ (Jpg))
-
Гонишь.
-
.Sm@sH.
[OFF]reinstall ruki.sys[/OFF]
-
Из оффициального руководства!
fwrite -- Binary-safe file write
fwrite -- бинарная запись в файл
fwrite($myf, fread($f, 100000));
Откуда ты знаешь, что размер файла именно такой?
Хочешь грузить весь файл, лучше используй функцию file() - она загоняет весь файл в массив, а потом записывай массив!
P.S. Может все это не работать, если на хостинге закрыты исходящие коннекты (на многих бесплатных именно так)
-
Вот мой код:
$url = "http://www.cs-mapping.com.ua/images/screens/de_ska1.jpg";
$file = fopen($url, "r");
$myfile = fopen("copy.jpg", "w");
$all = fread($file, 100000);
echo($all); // Тут рисунок выводится как нужно
fwrite($myfile, $all); // А тут записывается неправильно!!!
fclose($myfile);
fclose($file);
?>
Вот оригинал рисунка (точно так-же он и выводится echo() в скрипте:
(http://www.cs-mapping.com.ua/images/screens/de_ska1.jpg)
А вот как он записывается в файл:
(http://www.cs-mapping.com.ua/another/copy.jpg)
Что скажете на это?
-
.Sm@sH.
не пашет... А знаете почему?
Потому что вы не читаете ФАКИ !
RTFM
Note: The mode may contain the letter \'b\'. This is useful only on systems which differentiate between binary and text files (i.e. Windows. It\'s useless on Unix). If not needed, this will be ignored.
-
PS:
(http://perec.km.ru/copy.jpg)
$url = "http://www.cs-mapping.com.ua/images/screens/de_ska1.jpg";
$file = fopen($url, "r");
$myfile = fopen("copy.jpg", "wb");// RTFM
$all = fread($file, 100000);
echo($all); // Тут рисунок выводится как нужно
fwrite($myfile, $all); // И тут записывается правильно!!!
fclose($myfile);
fclose($file);
?>
-
Да тормознул я - совсем забыл про binary (\'b\')
Кстати, RTFM это знаит (READ THE FUCKING MANUAL) или (READ THE FOLLOWING MANUAL)? :D