Autor Zpráva
Darker
Profil
Naprosto to nechápu, ale nepodailo se mi najít dokumentaci formátu požadavku POST, který má typ multipart/form-data.
Pomohl jsem si firebugem, ale nepomohl jsem si moc, protože moje dílo nefunguje.
Zdrojový kód:
$url="http://nejaka.url";
$url = parse_url($url);
$boundary="-----------------------------5820148351663";   //Tohle jsem pochopil jako rohlížečem geneované dělíto
$data=array(
   "subor"  => array("bleee","1.png","image/png"),
   "upload" => "ok",
);

$request="";
foreach($data as $name => $value) {
 $request.="-----------------------------5820148351663\r\n";  //DELITKO NA ZACATEK
 if(is_array($value)){ //Je soubor
   $request.="Content-Disposition: form-data; name=\"$name\"; filename=\"{$value[1]}\"\r\n";  
   $request.="Content-Type: {$value[2]}\r\n\r\n";
   $request.=$value[0]."\r\n";
 }
 else {
     $request.="Content-Disposition: form-data; name=\"$name\"\r\n\r\n$value\r\n";  //normalni post
 }
}
$request.="$boundary--";  //konec, pokud dobre chapu, obsahuje delitko a dve pomlcky
$request="Content-type: multipart/form-data; boundary=$boundary\r\n"."Content-length: ". strlen($request) ."\r\n\r\n".$request;  //puvodne sem to cpal do hlavicek, ale firebug to ma v tele.

/**Nasleduje odesilani. Tam chyba asi neni**/
$host = $url['host'];
$path = $url['path'];
$fp = fsockopen($host, 80);

    fputs($fp, "POST ".$path." HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 ( .NET CLR\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $request);
    while(!feof($fp)) {
         $result .= fgets($fp, 128);
    }
      fclose($fp);
     


A celé tělo požadavu tedy vypadá takto:
Content-type: multipart/form-data; boundary=-----------------------------5820148351663
Content-length: 385

-----------------------------5820148351663
Content-Disposition: form-data; name="subor"; filename="1.png"
Content-Type: image/png

bleee
-----------------------------5820148351663
Content-Disposition: form-data; name="upload"

ok
-----------------------------5820148351663
Content-Disposition: form-data; name="potvrd"

Nahrát
-----------------------------5820148351663--
Theo.
Profil *
... a co to má původně dělat ?
Darker
Profil
Cílem je odeslat POST v multipart formátu tak aby se data řádně zpracovala.
Živá ukázka:
http://jmareda.tk/roboti/uploader.php
Výstup je dělen na tři části dělícími čarami.
První část je kód požadavku tak, jak byl odeslán.
Druhá část zobrazuje zdrojový kód odpovědi (bez dekódování).
Třetí část je jen text zkopírovaný z firebugu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0