отправьте $ _FILE на удаленный URL и получите ответ XML - PullRequest
1 голос
/ 13 июля 2011

Я хочу смоделировать следующую форму и получить ответ xml:

<form action="https://s7ugc3.scene7.com/ugc/image?op=upload&upload_token=<?php //echo CDN::getS7Token(); ?>&company_name=usineadesign" method="post" enctype="multipart/form-data">
        <p>
                Formulaire d'envoi de fichier :<br />
                <input type="file" name="image" /><br />
                <input type="submit" value="Envoyer le fichier" />
        </p>
</form>

Картинка на сервере и у меня есть легкий доступ к ее пути! Я хочу создать функцию, которая бы выглядела так

uploadtoscen7($path_to_image)
{
  ...
  return $url;
}

Спасибо всем, кто мог мне помочь!

1 Ответ

0 голосов
/ 13 июля 2011

Я предлагаю вам использовать cURL для отправки сообщений на удаленный HTTP-сервер. Вам нужно будет установить POSTDATA соответственно. Я использую эту функцию для отправки / получения данных с HTTP-сервера:

function get_page_by_curl($searchUrl, $post=false, $postParams="")
{
    print " " . $searchUrl;
    global $errMsg;
    //$userAgent = "Googlebot/2.1( http://www.googlebot.com/bot.html)"; 
    $userAgent = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.5 Robot";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
    curl_setopt($ch, CURLOPT_URL, $searchUrl);
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_NOPROGRESS, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
    if($post)
    {
         curl_setopt ($ch, CURLOPT_POST, true);
         curl_setopt ($ch, CURLOPT_POSTFIELDS, $postParams);
    }
    $htmlPage = false;
    do
    {
        $htmlPage = curl_exec($ch);
        $errno = curl_errno($ch);
        if($errno == 28)
        {
            print ".";
            flush();
            sleep(SLEEP_TIME);
        }
        elseif($errno == 7)
        {
            print "*";
            flush();
            sleep(SLEEP_TIME);
        }
        elseif($errno == 6)
        {
            print "+";
            flush();
            sleep(SLEEP_TIME);
        }
        elseif($errno != 0)
        {
            $errMsg = $errno . ": " . curl_error($ch);
        }
    }
    while(!$htmlPage && $errno == 28);

    return $htmlPage;
}

После этого вы сможете назвать это так:

$xml = get_page_by_curl($url, true, 'image=@/full/path/to/file&submit=Envoyer+le+fichier');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...