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

Отправить параметры запроса вместе с телом запроса в котором файл?

Привет!
Как отправить из контроллера запрос с параметрами по URL, включая тело запроса у которого есть параметр file, в котором необходимо передать .txt файл?

Есть API в котором по URL надо передать файл.
В Api так и написано, параметры запроса: key, id, token и т.д.
А также написано, тело запроса, с параметром: file, типом данных: file. По ссылке передаются параметры и файл.

Использовав curl и параметры post, файл не отправляется:
$data = array(
...
'file' => 'http://url/file.txt'
);

И еще вопрос, а можно ли как то проверить сформированный запрос в контроллере до отправки запроса? увидеть сформированный url
  • Вопрос задан
  • 583 просмотра
Подписаться 1 Простой 4 комментария
Решения вопроса 1
@ChertyakaNUB Автор вопроса
Вообщем справился, как всегда сам! Помощи нифига ни от кого не дождешься. Решение:
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.com/add/?token=TOKEN&id=ID8&value=100&name=TEST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => new CurlFile($_SERVER['DOCUMENT_ROOT'] . '/upload/test.txt')]);

$headers = array();
$headers[] = 'Content-Type: multipart/form-data; boundary=---011000010111000001101001';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

Передача параметров в URL, а не в массиве.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!
Если файл локальный:
$data = array(
...
'file' => new \CURLFile($path_to_local_file)
);

Если удаленный на сайте каком нибудь, тогда так:
$data = array(
...
'file' => file_get_contents($path_to_remote_file)
);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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