2015-03-25 2 views
0

Я пытаюсь загрузить приложения в конкретный случай с использованием REST API, который я успешно завершил.SalesForce REST API PHP, не может видеть загруженное приложение

файлы загружаются в этот конкретный случай. и я использую base64_encode для отправки двоичных данных в SalesForce, поскольку они требовали отправки двоичных данных.

но проблема в том, что, когда я вижу файлы в панели управления отделом продаж, всех файлы перечислены там и их размер является правильным, имя правильно и т.д.
, но когда я просмотреть/скачать любой файл загруженный с сценарий он не открывается. файл показывает ошибку. т.е. когда я загружаю png-образ с остальным API, я не смогу открыть изображение после загрузки с панели управления силами продаж.

Может ли кто-нибудь помочь? Я думаю, что сила продаж не может декодировать загруженные файлы обратно из base64_encode, верно?

Заранее спасибо

здесь код

$fp = fopen($file, 'r'); 
$db_img = fread($fp, filesize($file)); 
$db_img = addslashes($db_img); 
$db_img = base64_encode($db_img); 

, а затем после кодирования я конкатенации $ db_img внутри элемента тела, как этот

 
................... 

...'.$db_img.'... 

.................; 
+0

разместить свой код, кажется, что это может быть получение двойного кодирования. – superfell

+0

@superfell извините, я добавил код. –

ответ

0

я понял это сам. Я думал, что должен опубликовать ответ. Я использую следующую функцию для добавления вложений в объект Case.

Нет необходимости конвертировать в base64 на всех

public function add_attachment($case_id, $full_file_path, $file_name) { 
    $url = $this->instance_url."/services/data/v33.0/chatter/feed-elements"; 

    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 



    $headers = array(); 
    $headers[] = "Authorization: OAuth $this->access_token"; 
    $headers[] = 'Content-Type: multipart/form-data; boundary=a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq'; 

    $post_text = '--a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq 
    Content-Disposition: form-data; name="json" 
    Content-Type: application/json; charset=UTF-8 

    { 
     "body":{ 
      "messageSegments":[ 
      { 
       "type":"Text", 
       "text":"Task Attachment" 
      } 
      ] 
     }, 
     "capabilities":{ 
      "content":{ 
      "description":"Task Attachment", 
      "title":"'.$file_name.'" 
      } 
     }, 
     "feedElementType":"FeedItem", 
     "subjectId":"'.$case_id.'" 
    } 

    --a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq 
    Content-Disposition: form-data; name="feedElementFileUpload"; filename="'.$file_name.'" 
    Content-Type: image/png 

    '. file_get_contents($full_file_path).' 

    --a7V4kRcFA8E79pivMuV2tukQ85cmNKeoEgJgq--'; 

    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_VERBOSE, 1); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_text); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLINFO_HEADER_OUT, true); 

    $response_json = curl_exec($curl); 
    $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
    //print_r($info); 

    if ($status != 201) { 
     $this->errors[] = "Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl);   
     return FALSE; 
    } 
    $this->status = $status; 
    $this->curl_error = curl_error($curl); 
    $this->curl_errno = curl_errno($curl); 
    return json_decode($response_json,TRUE); 

} 
Смежные вопросы