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

Как правильно принять файл с другого серверва отправленного через 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
(
)
  • Вопрос задан
  • 77 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
- curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Для отправки файла Content-Type должен быть multipart/form-data с соответствующим стандарту оформлением. Но вы переопределяете Content-Type на кастомный и нарушаете стандарт запроса.
Уберите свой CURLOPT_HTTPHEADER и получите файл в $_FILES как обычно.

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

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

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