YardalGedal
@YardalGedal
yeah boy

Как отправить файл POST из скрипта?

Есть HTML форма, которая отправляет файл:
<form enctype="multipart/form-data" method="post">
  <p><input type="file" name="file[]" multiple required><input type="submit" name="submit"></p>
 </form>

Далее скрипт ловит этот файл через массив $_FILES и обрабатывает его.
Вопрос: Как отправить файл через PHP, чтобы он отправился именно в массиве $_FILES, а не используя $_POST['file'] = file_get_contents("file.txt");
  • Вопрос задан
  • 3332 просмотра
Решения вопроса 1
valerium
@valerium
Изобретая велосипед
Судя по всему, принимающий скрипт находится вне вашей власти или вам как минимум неьзя его править. Я угадал? :-)

В документации PHP написано, что он "способен получать загруженные файлы из любого браузера, совместимого со стандартом RFC-1867". В стандарте RFC-1867, в свою очередь, введён тип кодирования "multipart/form-data". Следовательно, чтобы PHP понял, что ему передают не просто переменную в POST, а файл (и пометил его в массив $_FILES), нужно, чтобы клиент передал ему соответствующий тип. Так что можно либо внимательно изучить документ и организовать передачу самому, используя сокеты, либо внимательно изучить документацию в PHP к cURL.

В PHP 5.5 изменились правила использования cURL, таким образом, чтобы передать файл, нужно использовать объект CURLFile (кстати, в русской версии документации этой страницы нет). В коде это будет выглядеть как-то так (не проверял).

$ch = curl_init();
$curlfile = new CURLFile('/home/user/we-are-champions.mp3', 'audio/mp3', 'best-song.mp3')
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlfile);
$content = curl_exec($ch);
curl_close ($ch);


Ну, или просто откатитесь на более старую версию PHP (до 5.5) и используйте тот подход, который описан в ответе выше. Но это неразумно, на мой взгляд.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 10:21
1200 руб./в час
26 апр. 2024, в 10:10
1000 руб./за проект