Я бы хотел создать POST-запрос с использованием PHP-метода curl_ *, который выполняет следующие действия:
- загружает файл (поэтому запрос должен быть отправлен как multipart / form-data)
- отправляет строку текста, где строка начинается с символа "@"
Например, следующий код работает, потому что в строке текста нет начального символа "@":
<?php
$postfields = array(
'upload_file' => '@file_to_upload.png',
'upload_text' => 'text_to_upload'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://example.com/upload-test');
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
curl_exec($curl);
curl_close($curl);
?>
Но он прерывается, если строка начинается с символа "@", что приводит к тому, что curl ищет несуществующий файл с именем "text_to_upload" (обратите внимание, что единственным изменением является добавление ведущегоСимвол "@" в поле upload_text):
<?php
$postfields = array(
'upload_file' => '@file_to_upload.png',
'upload_text' => '@text_to_upload'
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://example.com/upload-test');
curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
curl_exec($curl);
curl_close($curl);
?>
Итак ... можно ли отправлять текст с начальным символом "@" при одновременной загрузке файла с использованием методов curl_ * вPHP?
Конечный результат (если возможно) должен быть эквивалентен использованию командной строки curl:
curl -F 'upload_=@file_to_upload.png' --form-string 'upload_text=@text_to_upload' 'http://example.com/upload-test'
Спасибо!