Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: filesonic.com remote upload на php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
jack7277
Отправлено: 14 Августа, 2011 - 20:46:39
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Не работает следующий код, дело доходит до пробела в имени файла и дальше обрезка. Если урл вставить вручную в форму с заменой пробела на %20 по урлу http://www[dot]filesonic[dot]com/remote-upload
то файл качается нормально, а если через http post запрос, то вместо %20 почему-то пробел пролезает и стоп.
Допустим имя файла "123 123.avi" то передается только "123", всё что после пробела отрезается.
Как обмануть и почему через браузер берется корректно.

код:
$user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0';
$In = 'Upload'; //Кнопка входа, название
$redirect = '/remote-upload';
// $url_fname содержит имя файла, допустим "123 123.avi"
$url_fname = rawurlencode($url_fname); //пробовал urlencode, и строку ниже
//$url_fname = str_replace (" ", "%20", $url_fname);
// ссылка качать с удаленного фтп
$links = 'ftp://ftpname:ftppass@myhost.ru/'.$url_fname;
//$links = urlencode ($links2); // пробовал и так
//$links = strtr ($links, " ", "\x20"); // и так

// в пост запросе передаю редирект, линкс и кнопку отправить
$tmp_post = "redirect=$redirect&links=$links&controls[submit]=$In";

// куки получили раньше
$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, 'http://www.filesonic.com/remote-upload');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file); //Подставляем куки
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file); //Подставляем куки
curl_setopt($tuCurl, CURLOPT_HTTPHEADER, 'Content-Type: application/x-www-form-urlencoded');

curl_setopt($ch, CURLOPT_POSTFIELDS, $tmp_post);
$answer = curl_exec($ch);
curl_close($ch);
 
 Top
LIME
Отправлено: 14 Августа, 2011 - 20:54:27
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




http://php.su/functions/?urlencode
(Добавление)
а вообще вам надо HTTP почитать
лишних пробелов в протоколе быть не может, каждый на счету ))
браузер на + заменяет но можно и %20

(Отредактировано автором: 14 Августа, 2011 - 21:41:09)

 
 Top
jack7277
Отправлено: 15 Августа, 2011 - 07:31:44
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




вместо $url_fname = rawurlencode($url_fname);
сделал $url_fname = urlencode($url_fname);

и вместо
$tmp_post = "redirect=$redirect&links=$links&controls[submit]=$In";

сделал
$post_data = array('redirect'=>$redirect, 'links'=>$links, 'controls[submit]'=> $in);
$tmp_post = http_build_query($post_data);

и всё заработало.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB