Как убедиться, что запрос cURL POST имеет файл [duplicate]

Это работает:

Iterator<Integer> iter = l.iterator();
while (iter.hasNext()) {
    if (iter.next().intValue() == 5) {
        iter.remove();
    }
}

Я предположил, что поскольку цикл foreach является синтаксическим сахаром для итерации, использование итератора не помогло бы ... но оно дает вам эту функциональность .remove().

55
задан Achrome 4 March 2013 в 13:50
поделиться

1 ответ

Использование:

if (function_exists('curl_file_create')) { // php 5.5+
  $cFile = curl_file_create($file_name_with_full_path);
} else { // 
  $cFile = '@' . realpath($file_name_with_full_path);
}
$post = array('extra_info' => '123456','file_contents'=> $cFile);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result=curl_exec ($ch);
curl_close ($ch);

Вы также можете обратиться:

http://blog.derakkilgo.com/2009/06/07/send-a- file-through-post-with-curl-and-php /

Важная подсказка для PHP 5.5 +:

Теперь мы должны использовать https: // wiki.php.net/rfc/curl-file-upload, но если вы все еще хотите использовать этот устаревший подход, вам нужно установить curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);

110
ответ дан robsch 18 August 2018 в 17:44
поделиться
  • 1
    Возможно, лучший способ использовать встроенную функцию из curl: php.net/manual/es/function.curl-file-create.php . Конечно, вы можете использовать способ POSTFIELDS и заполнить значение, добавляемое с помощью @. Во всяком случае, asnwer копируется из пользовательского использования завитка из блога. Правильный ответ означает, что символ @ определяет его как файл, а не var. $ post будет содержать @filename.jpg на примере. – erm3nda 10 November 2013 в 01:26
  • 2
    @ erm3nda Это только PHP 5.5+. – Jeremy Logan 19 June 2014 в 22:16
  • 3
    @fiXedd Я в настоящее время использую php 5.6, и требуется curl_file_create (решение, предоставленное karthik, не работает). Поэтому код должен быть обновлен примерно так: if function_exists('curl_file_create')) { $cFile = curl_file_create($dest); } else { $cFile = '@' . realpath($dest); } – Marek Roj 15 September 2014 в 18:29
  • 4
    Для чего используется extra_info => 123456? – Aaron Gillion 26 April 2015 в 01:24
  • 5
    это решение перестало работать в php 5.6, решение заключается в добавлении файла как: new CURLFile (realpath ($ fileName)); – Michał Fraś 29 February 2016 в 11:45
Другие вопросы по тегам:

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