Autor Zpráva
Musilda
Profil
Zdravím všechny

potřeboval bych poradit s base64_encode.

Pro import fotografií na sreality jsem vytvořil toto:

$image = file_get_contents($url);
$img = base64_encode($image);

$data = new stdClass;
$data->main = (int)1;//Hlavní fotka
$data->photo_id = (int)$img_id;
$data->data = (binary)$img;

$predat = array($session_id,$advert_id,$advert_rkid,$data);
$request = xmlrpc_encode_request('addPhoto', $predat);

Tento postup mi bez problémů funguje u inzerátů, ale zde u fotografie, která musí být binary, tak mi funkce base64_encode neustále vrací string.

Když dám var_dump, tak je to ["data"]=> string(84272) "/9j/4AA...... a tak dále

$url je url adresa. Nevím zda to chápu, ale ta funkce by neměla vracet string.

Díky za každou pomoc.
Chro
Profil
Binary vrací file_get_contents. Enkódováním base64 se převede na string.
Musilda
Profil
Zkoušel jsem to i tak. Stále to hází chybu

["statusMessage"]=> string(73) "Invalid parameters: Attribute 'data' must be binary (it is ).

Nemůže být problém při vytvoření struct?
Jan Tvrdík
Profil
Musilda:
Viz novy import srealit a Import fotografií na sreality
Musilda
Profil
Jan Tvrdík:
Děkuji za ty dva odkazy. Hledáním řešení problému jsem strávil již několik hodin a ty vlákna jsem četl.
Myslím, že tam je použito XML_RPC.
Jan Tvrdík
Profil
Musilda:
Na funkci xmlrpc-set-type jsi narazil?
Musilda
Profil
Narazil a nepovedlo se. :-(
To není o tom, že bych napsal sem a čekal až mi to někdo strčí pod nos. Vím že to tady občas tak lidi píší, ale fakt jsem nad tím včera strávil skoro osm hodin a nepovedlo se vyřešit.

Pokud to použiji takto:
$data->data = xmlrpc_set_type($img, 'base64');
výsledek:
object(stdClass)#5781 (3) { ["main"]=> int(1) ["photo_id"]=> int(119) ["data"]=> bool(true) } array(3) { ["status"]=> int(452) ["output"]=> array(0) { } ["statusMessage"]=> string(74) "Invalid parameters: Attribute 'data' must be binary (it is )." }

Pokud takto:
$item = xmlrpc_set_type($img, 'base64');
    $data->data = (binary)$item;
Výsledek:
object(stdClass)#5782 (3) { ["main"]=> int(1) ["photo_id"]=> int(119) ["data"]=> string(1) "1" } array(3) { ["status"]=> int(452) ["output"]=> array(0) { } ["statusMessage"]=> string(73) "Invalid parameters: Attribute 'data' must be binary (it is )." }


Nejdřív je to bool, podruhé string. Takže fakt nevím.
Jan Tvrdík
Profil
Musilda:
Tak znovu a tentokrát si přečti dokumentaci.
Musilda
Profil
Tak bohužel to nejsem schopen dát dohromady. Pochopil jsem z dokumentace, že to změní na objekt, ale nedokáži s tím hnout.
Joker
Profil
Musilda:
Pochopil jsem z dokumentace, že to změní na objekt, ale nedokáži s tím hnout.
Z té dokumentace:
Return Values
Returns TRUE on success or FALSE on failure. If successful, value is converted to an object.

= Vrací TRUE při úspěchu a FALSE při chybě. Je-li volání úspěšné, [parametr] value se konvertuje na objekt.

Tzn. nemá smysl pracovat s návratovou hodnotou té funkce.

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: