SalesForce REST API PHP, не может видеть загруженное вложение

0

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

файлы загружаются в этот конкретный случай. и я использую 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 внутри элемента body, как это

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

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

.................;
  • 0
    опубликовать свой код, звучит так, как будто он может быть двойным
  • 0
    @superfell извините, я добавил код.
Теги:
salesforce
rest

1 ответ

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);

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню