PHP Curl с Knack API - Опубликуйте изображение - PullRequest
0 голосов
/ 18 февраля 2019

Есть ли у кого-нибудь опыт работы с Knack API (https://www.knack.com/) здесь?

Я использую PHP curl для публикации изображения.

Когда я использую POSTMAN, изображениеуспешно загружается. Но когда я копирую код из POSTMAN (опция почтальона для копирования исходного кода) и добавляю его в свой исходный код, knack возвращает пустую ошибку объекта («Пожалуйста, выберите файл для загрузки»).

Документация Knack API: https://www.knack.com/developer-documentation/#file-image-uploads

Исходный код POSTMAN ниже

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.knack.com/v1/applications/app-id/assets/file/upload",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"files\"; filename=\"C:\\Users\\shavk\\Pictures\\292937.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--",
  CURLOPT_HTTPHEADER => array(
    "Cache-Control: no-cache",
    "Content-Type: application/x-www-form-urlencoded",
    "Postman-Token: fe1f4eea-b2b5-2d43-2c3c-c262438866d4",
    "X-Knack-Application-Id: id",
    "X-Knack-REST-API-Key: key",
    "content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 18 февраля 2019

Генератор PHP / curl кода Почтальона не очень хорош.для загрузки файлов в формате multipart/form-data используйте CURLFile .

, код должен быть

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.knack.com/v1/applications/app-id/assets/file/upload",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => array(
        'files' => new CURLFile("C:\\Users\\shavk\\Pictures\\292937.jpg")
    ),
    CURLOPT_HTTPHEADER => array(
        "X-Knack-Application-Id: id",
        "X-Knack-REST-API-Key: key",
    ),
));

$response = curl_exec($curl);
  • , если вы являетесь клиентом Почтальона (используя версию pro / любой другой), я предлагаю вам обратиться в службу поддержки клиентов с жалобой на ужасный код, сгенерированный генератором кода PHP.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...