Не работает следующий код, дело доходит до пробела в имени файла и дальше обрезка. Если урл вставить вручную в форму с заменой пробела на %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);