Как скачать файл с помощью php?

Статус
В этой теме нельзя размещать новые ответы.

muzshura

Постоялец
Регистрация
27 Фев 2008
Сообщения
74
Реакции
3
Нужно скриптом взять файл с другого сервера и записать в папку с самим этим скриптом.
 
отсюда
Скрытое содержимое доступно для зарегистрированных пользователей!

PHP:
<?php
$id='http://server.com/full.tar.gz';// тут урл
$savefile="test.gz";//путь куда сохранит.не забудь дать разрешение на запись в директорию

$ch = curl_init ($id);
$fp = fopen ($savefile, "w");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);  
?>

из инетпоиска
PHP:
<?php

$filen="http://server.org/eval_file.txt";

$file_new="eval_file.local.txt";

$data = implode("", file($filen));

$fp = fopen($file_new, "w");

fputs($fp, $data);

fclose($fp);

?>
 
Не пашет. Удается при некотором подходе выдача в экран, но не в файл.
 
отсюда
*** скрытое содержание ***

из инетпоиска
PHP:
<?php

$filen="http://server.org/eval_file.txt";

$file_new="eval_file.local.txt";

$data = implode("", file($filen));

$fp = fopen($file_new, "w");

fputs($fp, $data);

fclose($fp);

?>

Так не проще во втором случае?
PHP:
<?php

$filen=file_get_contents("http://server.org/eval_file.txt");

file_put_contents("eval_file.local.txt", $filen);
?>
 
так
во-первых на серваке вполне работает
ты пробуешь как скрипт или как вызов php с файлом из комстроки? на винде или линухе?

другие варианты:
во первых тупо

$cmd="wget -O local.name http://remote.server.com/file.zip";
и дальше вызов любой из шести команд чтоб дёрнуть wget
примеры всех шести - тут
Скрытое содержимое доступно для зарегистрированных пользователей!


дальше проверять if (function_exists("curl_init") где курл
навроде того
PHP:
<?php
$sourceFileName='http://www.someserv.com/files/file.zip';
$origFileName='local.name';
if (function_exists("curl_init")) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $sourceFileName);
            curl_setopt($ch, CURLOPT_TIMEOUT, 300);
//            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");


            $st = curl_exec($ch);
            $fd = @fopen($origFileName, "w");
            fwrite($fd, $st);
            @fclose($fd);

            curl_close($ch);
        } else 
{
            $fp = @fopen($sourceFileName, "rb");
            $fd = @fopen($origFileName, "w");
            if ($fp && $fd) {
                while (!feof($fp)) {
                    $st = fread($fp, 4096);
                    fwrite($fd, $st);
                                    }
                            }
            @fclose($fp);
            @fclose($fd);
  }
?>
 
  • Заблокирован
  • #6
рас уже затронулась тема cirl подскажите как под денвером его поднять какие библиотеки и куда скопировать
 
Ничего из вышепречисленного не помогло.
 
Ничего из вышепречисленного не помогло.
Ну просто так не могло не помочь, должно хоть какую то ошибку писать(приведи пример), хотя на большинстве фришных хостингов работать не будет ни один из методов.
 
рас уже затронулась тема cirl подскажите как под денвером его поднять какие библиотеки и куда скопировать


Кладешь php_curl.dll с папку с расширениями, не помню точно имя, уже полгода как снес этого кастрата, ext или extension. Затем в php.ini раскомментируешь строку
Код:
extension=php_curl.dll
и все.

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

Тот же AppServ:
 
Ничего из вышепречисленного не помогло.

тогда результат phpinfo() в студию - может там вообще урлы нельзя открывать, fopen запрещено и т д
или хотя бы список disable_function
если запрещены не все функции для команд - то качать файлы кроме wget-а можно посредством fetch, links, lynx, get, curl

до кучи ещё качалки
если нет функции file_put_contents
PHP:
<?php $filename='/home/user/domains/server.ru/public_html/vasya/test.file'; 
unlink($filename);
$fp2  =  fopen  ( $filename ,  "w" ); 
$contents=file_get_contents('http://remote.server.com/util/remotefile.zip');
fwrite($fp2, $contents); 
fclose($fp2);
?>

PHP:
<?php
$filen=file_get_contents("http://server.org/eval_file.txt");
if (!function_exists("file_put_contents"))
{
function file_put_contents($filename, $data, $file_append = false)
       {
        $fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
                if(!$fp) {
                trigger_error('file_put_contents cannot write in file.', E_USER_ERROR);
                        return;
                }
                $result = fputs($fp, $data);
                fclose($fp);
                return $result;
        }
} 
file_put_contents("eval_file.local.txt", $filen); 
?>

через fsockopen
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху