Опять upload

webmaster_Chris

Новичок
Опять upload

Не нашел ответа который нужен... как загрузить файл с сервера (бинарный), чтобы сервер получил рефер, свой, соответственно...

При этом чтобы переменная узла была в одной переменно: http://123.ru/123.exe

Я написал так:

PHP:
if($fp = fsockopen($host, $port, $errno, $errstr,$this->_fp_timeout)){
fputs($fp,"GET ".$URI.$url_img." HTTP/1.0\nHOST: ".$URI."\n\n");
while(fgets($fp,2048)!="\r\n" && !feof($fp));
unset($buf);
while(!feof($fp)) $buf.=fread($fp,2048);
fclose($fp);
echo "Download fine, size ".strlen($buf)." bytes."; flush();

$f=fopen($url_img,"wb+");
fwrite($f,$buf,strlen($buf));
fclose($f);
}
но, тут надо нескольок переменных вводить, а задача, чтобы был адрес в одной переменной. У кого есть решения на эту проблему?

Заранее спасибо!
 

webmaster_Chris

Новичок
просто
1. не знаю как рефер послать :) не помню как пишется :)
2. 2 как строку разюить на выражения $host, $port, $URI, $url_img...
Если пытаюсь получить с виртуального сервера Апача, то просто отфутболивает и говорит что нет такого файла... Просто уже туплю,..
 

SiMM

Новичок
1. Подслушай, как это происходит в случае с браузером, где взять инструмент для этого написано в FAQ.
2. [m]parse_url[/m]
 

webmaster_Chris

Новичок
Ага... спасибки, ща попробую

-~{}~ 30.12.04 13:02:

ну вроде что то получилось :)

-~{}~ 30.12.04 13:07:

PHP:
<?

$link = "http://www.***.ru/images/8.jpg";

$url = parse_url("$link");


$host = $url[host];
$port = $url[scheme];
$port = str_replace("http","80",$port);
$port = str_replace("ftp","21",$port);
$URI = $url[scheme]."://".$host;
$url_img = $url[path];

print "\n\nPARAM: host $host port $port uri $URI img $url_img\n\n";

print "Connect to $URI\n";
if($fp = fsockopen($host, $port, $errno, $errstr,20)){

print "Get connected, exchange data\n";

fputs($fp,"GET ".$URI.$url_img." HTTP/1.0\nHOST: ".$URI."\nReferer: ".$URI."\n\n");
while(fgets($fp,2048)!="\r\n" && !feof($fp));
unset($buf);
while(!feof($fp)) $buf.=fread($fp,2048);
fclose($fp);
echo "Download fine, size ".strlen($buf)." bytes."; flush();

$f=fopen($url_img,"wb+");
fwrite($f,$buf,strlen($buf));
fclose($f);
}

?>
говорит

Warning: fopen(/images/8.jpg): failed to open stream: No such file or directory in /usr/home/chris/239847928374/try.php on line 30

Warning: fwrite(): supplied argument is not a valid stream resource in /usr/home/chris/239847928374/try.php on line 31

Warning: fclose(): supplied argument is not a valid stream resource in /usr/home/chris/239847928374/try.php on line 32

что не так?

-~{}~ 30.12.04 13:36:

хм...

Connect to http://192.168.0.46
Get connected, exchange data, GET http://192.168.0.46/voip/calls_day.PNG
Download fine, size 0 bytes.


почему size 0 bytes????

Проьую телнетом, всё окей... :-\
 

SiMM

Новичок
Автор оригинала: webmaster_Chris
Warning: fopen(/images/8.jpg): failed to open stream: No such file or directory in /usr/home/chris/239847928374/try.php on line 30
А я склонен верить в то, что в корне сервера никакой папки /images действительно не существует.
PHP FAQ: Пути в файловой системе и на сайте. + чтобы следующие вопросы были более осмысленными PHP FAQ: Ничего не работает! Что делать???
Connect to http://192.168.0.46
Get connected, exchange data, GET http://192.168.0.46/voip/calls_day.PNG
Download fine, size 0 bytes.

почему size 0 bytes????
Это вообще про что?
 

webmaster_Chris

Новичок
ПРО ТО:

while(fgets($fp,2048)!="\r\n" && !feof($fp));
unset($buf);
while(!feof($fp)) $buf.=fread($fp,2048);
fclose($fp);
echo "Download fine, size ".strlen($buf)." bytes."; flush();


Всё равботает, всё сделла, спасибо! :)
 
Сверху