У меня есть функция в salesforce, в которой я получаю вложение, которое может быть любого типа файла (pdf, xls, png, …).
function getData($access_token,$instance_url,$url){
$url = $instance_url."/services/data/v32.0/".$url;
$headers = array('Authorization: OAuth ' . $access_token);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
//curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );
//curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, TRUE );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers);
$requestBody = curl_exec ($ch);
$result = json_decode($requestBody, true);
return $result;
}
$attId = "00P0f00000ly5ZCEAY";
$body = "sobjects/Attachment/00P0f00000ly5ZCEAY/Body";
$file = getData($access_token,$instance_url,$body);
В результате файл возвращается в двоичном виде.
so $ file = // Some Binary File
Что я могу сделать с $ file, чтобы сохранить его локально?
прямо сейчас результат этой функции:
??%???T?)???)?eFa???Bɶ?l6???,?0?l?%kc?w?cՂX8?"?*Q>?ē??/y???=??T??Ċ?sǓ???l...
.
...
похоже, он пытается напечатать файл на моем экране.
необходимо установить правильный curl_opts
$headers = array('Authorization: OAuth ' . $access_token);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt ( $ch, CURLOPT_BINARYTRANSFER, TRUE );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers);
Других решений пока нет …