Задать вопрос

Как правильно принять файл с другого серверва отправленного через CURL?

Есть файл xml, пытаюсь его отправить на другой сервер. Подскажите на принимающей стороне пустота, что упускаю?

Так выглядит отправляющий код
//CURL
$curl_files = array(
	'file' => curl_file_create($_SERVER["DOCUMENT_ROOT"]. '/ajax/file.xml'),
);
$url = 'https://domain.ru/test.php';
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $curl_files);
$result = curl_exec($ch);
curl_close($ch);


На сайте создай файл test.php куда принимать с заголовками
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST");
header("Content-Type: text/xml; charset=UTF-8");

$file = $_POST;


далее распечатываю _POST и ничего не вижу

Date: 2024-07-05 11:13:16
Array
(
)
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
- curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
Ответ написан
Комментировать
Melkij
@Melkij
DBA для вашего PostgreSQL?
Для отправки файла Content-Type должен быть multipart/form-data с соответствующим стандарту оформлением. Но вы переопределяете Content-Type на кастомный и нарушаете стандарт запроса.
Уберите свой CURLOPT_HTTPHEADER и получите файл в $_FILES как обычно.

Либо отправляйте свой файл как-то иначе, не через curl_file_create. Договоритесь на отправителе и получателе использовать один и тот формат запроса.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы