Как передать параметр «attachment» apiRequest для загрузки изображения FedEx?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как передать параметр «attachment» apiRequest для загрузки изображения FedEx?

Сообщение Anonymous »

*** Обновлено:
Я использую FedEx REST API для загрузки изображений (

Код: Выделить всё

/documents/v1/lhsimages/upload
), и я получаю сообщение об ошибке:

Код: Выделить всё

    [errors] => stdClass Object
(
[code] => 1001
[message] => Invalid request: invalid input : Invalid document details
)

Я подозреваю, что проблема может быть связана с тем, как я передаю данные — обычно это делается в запросе cURL для API FedEx.

Код: Выделить всё

         curl_setopt($ch, CURLOPT_POSTFIELDS, $this->apiRequest);
где $this->apiRequest — тело запроса в формате JSON. Это работает для других запросов API. Но загрузить изображение немного сложнее, поскольку оно содержит данные поля плюс файла:

Код: Выделить всё

document: {"document": {"referenceId": "1234", "name": "LH2.PNG",    "contentType": "image/png",    "meta": { "imageType": "SIGNATURE","imageIndex": "IMAGE_1"}},"rules": {"workflowName": "LetterheadSignature" }}
attachment: file.PNG
Я передал

Код: Выделить всё

        $body = (object)[
'referenceId' => 'Signature',
'name' => $filename,
'contentType' => $filetype,
'rules' => (object)[
'workflowName' => 'LetterheadSignature',
],
'meta' => (object)[
'imageType' => 'SIGNATURE',
'imageIndex' => 'IMAGE_1',
]
];

$sent_data = [
'document' => json_encode($body),
'attachment' => $file,
];

$this->apiRequest = $sent_data;
Я пробовал создать параметр $file двумя способами:

Код: Выделить всё

      $handle = fopen($full_filename, "r");
$file_contents = fread($handle, filesize($full_filename));
fclose($handle);
$file = base64_encode($file_contents);
а также:

Код: Выделить всё

      $file = curl_file_create($full_filename, $filetype, $filename);

где

Код: Выделить всё

      $filename = 'image-of-signature.png';
$filetype = 'image/png';
$full_filename = 'path-to-file' . $filename;
Ни то, ни другое не сработало; оба дали мне неверный запрос: неверный ввод: неверные данные документа ошибка 1001.
В документации FedEx параметр Attachment описывается как:

Код: Выделить всё

string 
Input the actual document/file to be uploaded.
Я также пробовал передать реальный путь к файлу, и это, конечно, тоже не сработало.

Подробнее здесь: https://stackoverflow.com/questions/787 ... age-upload
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»