Отправка файлов из php в другой api wordpress - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь отправить файлы из Wordpress во внешний API, вот пример моей функции для отправки простого json

 $customer_ids = array('CustomerIds' => [$user_email]);
 $recomended_url = 'https://example.com';
 $recomended_response = wp_remote_post($recomended_url, array(
        'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
        'body' => json_encode(customer_ids),
        'method' => 'POST',
        'data_format' => 'body',
  ));

Но в теле мне нужно отправить файл, я знаю путь к моему file

$path = wp_upload_dir();
$file = $path['path']."/CUSTOMERS.csv";

Это просто, что мне нужно просто сделать 'body' => json_encode ($ file) или мне нужно получить содержимое файла и сказать, что это файл? ?

Спасибо

1 Ответ

0 голосов
/ 17 июня 2020

Используйте это:

<?php

$local_file = 'file_path'; //path to a local file on your server
$post_fields = array(
    'name' => 'value',
);
$boundary = wp_generate_password( 24 );
$headers  = array(
    'content-type' => 'multipart/form-data; boundary=' . $boundary,
);
$payload = '';
// First, add the standard POST fields:
foreach ( $post_fields as $name => $value ) {
    $payload .= '--' . $boundary;
    $payload .= "\r\n";
    $payload .= 'Content-Disposition: form-data; name="' . $name .
        '"' . "\r\n\r\n";
    $payload .= $value;
    $payload .= "\r\n";
}
// Upload the file
if ( $local_file ) {
    $payload .= '--' . $boundary;
    $payload .= "\r\n";
    $payload .= 'Content-Disposition: form-data; name="' . 'upload' .
        '"; filename="' . basename( $local_file ) . '"' . "\r\n";
    //        $payload .= 'Content-Type: image/jpeg' . "\r\n";
    $payload .= "\r\n";
    $payload .= file_get_contents( $local_file );
    $payload .= "\r\n";
}
$payload .= '--' . $boundary . '--';
$response = wp_remote_post( $req,
    array(
        'headers'    => $headers,
        'body'       => $payload,
    )
);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...