Существует множество ответов на вопрос «загрузить файл с помощью php curl», и все они требуют наличия физического файла на компьютере.Он загружается путем ссылки на символ @ перед именем файла в полях POST.
Однако у меня есть данные файла уже в переменной PHP: $ data.Как я могу загрузить это напрямую, без необходимости сначала записать его в файл?
Я пробовал это:
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => SERVER_URL . '/test.php?abc=def&ghi=jkl',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 120,
CURLOPT_POST => 1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => ['file' => $data],
CURLOPT_HTTPHEADER => ["Content-type: multipart/form-data"],
CURLOPT_HEADER => true,
CURLOPT_INFILESIZE => strlen($data)
]);
$response = curl_exec($ch);
Но мой сервер выдает ошибку, что POST Content-Length превышает ограничение сервера8388608 байт.Тем не менее, в моем файле php.ini на сервере у меня есть upload_max_filesize = 500M.Таким образом, похоже, что этот POST не рассматривается как загрузка файла, состоящего из нескольких частей, а вместо этого пытается замять все данные файла в запрос POST.
Спасибо за любой совет.