Title: Чем заменить new CURLFile?
Last modified: 06.04.2023

---

# Чем заменить new CURLFile?

 *  [icopydoc](https://ru.wordpress.org/support/users/icopydoc/)
 * (@icopydoc)
 * [3 года, 6 месяцев назад](https://ru.wordpress.org/support/topic/%d1%87%d0%b5%d0%bc-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-new-curlfile/)
 * Вопрос в первую очередь к модераторам, но и ко всем, кто отлично разбирается 
   в WP.
   Есть код
 *     ```wp-block-code
       $params_arr = [
        "file1" => new \CURLFile($pic_url),
       ];
       ```
   
 * Не могу понять, как мне его переделать, чтобы вместо CURLFile была штатная функция
   вордпреса и нужны ли какие-то аргументы?
   Нужно это потому, что модератор не пропускает
   код, требует отказаться от CURLFile

Просмотр 2 ответов — с 1 по 2 (всего 2)

 *  [sazonische](https://ru.wordpress.org/support/users/sazonische/)
 * (@sazonische)
 * [3 года, 6 месяцев назад](https://ru.wordpress.org/support/topic/%d1%87%d0%b5%d0%bc-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-new-curlfile/#post-12228042)
 * [https://developer.wordpress.org/apis/making-http-requests/](https://developer.wordpress.org/apis/making-http-requests/)
 * Зачем файл нужен?
 *  Автор [icopydoc](https://ru.wordpress.org/support/users/icopydoc/)
 * (@icopydoc)
 * [3 года, 6 месяцев назад](https://ru.wordpress.org/support/topic/%d1%87%d0%b5%d0%bc-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-new-curlfile/#post-12228052)
 * Зачем файл нужен?
 * [@sazonische](https://ru.wordpress.org/support/users/sazonische/) по АПИ отправляется
   на сервер. Далее массив вторым параметром в эту функцию:
 *     ```wp-block-code
       function response_to_serv($request_url, $postfields_arr = [ ], $headers_arr = [ ], $request_type = 'POST', $pwd_arr = [ ], $encode_type = 'json_encode', $timeout = 30, $proxy = '', $debug = false, $sep = PHP_EOL, $useragent = 'PHP Bot') {
       		if (!empty($this->get_debug())) {$request_url = $request_url.'?dbg='.$this->get_debug();}
   
       		/* 
       		 * if (!empty($pwd_arr)) {
       		 *	if (isset($pwd_arr['login']) && isset($pwd_arr['pwd'])) {
       		 *		$userpwd = $pwd_arr['login'].':'.$pwd_arr['pwd']; // 'логин:пароль'
       		 *		curl_setopt($curl, CURLOPT_USERPWD, $userpwd);
       		 *	}
       		 * }
       		 **/
   
       		$answer_arr = [];
       		$answer_arr['body_request'] = null;
       		if ($request_type !== 'GET') { 
       			switch($encode_type) {
       				case 'json_encode':
       					$answer_arr['body_request'] = json_encode($postfields_arr);
       					break;
       				case 'http_build_query':
       					$answer_arr['body_request'] = http_build_query($postfields_arr);
       					break;
       				case 'dont_encode':
       					$answer_arr['body_request'] = $postfields_arr;
       					break;
       				default:
       					$answer_arr['body_request'] = json_encode($postfields_arr);
       			}
       		}
   
       		$args = [
       			'body'			=> $answer_arr['body_request'],
       			'method'		=> $request_type,
       			'timeout'		=> $timeout,
       			// 'redirection' => '5',
       			'user-agent'	=> $useragent,
       			// 'httpversion' => '1.0',
       			// 'blocking'    => true,
       			'headers'     => $headers_arr,
       			'cookies'     => [ ],
       		];
       		$result = wp_remote_request($request_url, $args);
   
       		if (is_wp_error($result)) {
       			$answer_arr['errors'] = $result->get_error_message(); // $result->get_error_code();
       			$answer_arr['body_answer'] = null;
       		} else {
       			$answer_arr['status'] = true; // true - получили ответ
       			// Разделение полученных HTTP-заголовков и тела ответа
       			$response_body = $result['body'];
       			$http_code = $result['response']['code'];
       			$answer_arr['http_code'] = $http_code;
   
       			if ($http_code == 200) {
       				// Если HTTP-код ответа равен 200, то возвращаем отформатированное тело ответа в формате JSON
       				$decoded_body = json_decode($response_body);				
       				$answer_arr['body_answer'] = $decoded_body;
       			} else {
       				// Если тело ответа не пустое, то производится попытка декодирования JSON-кода
       				if (!empty($response_body)) {
       					$decoded_body = json_decode($response_body);
       					if ($decoded_body != null) {
       						// Если ответ содержит тело в формате JSON, 
       						// то возвращаем отформатированное тело в формате JSON
       						$answer_arr['body_answer'] = $decoded_body;
       					} else {
       						// Если не удалось декодировать JSON либо тело имеет другой формат, 
       						// то возвращаем преобразованное тело ответа
       						$answer_arr['body_answer'] = htmlspecialchars($response_body);
       					}
       				} else {
       					$answer_arr['body_answer'] = null;
       				}
       			}
       			// Вывод необработанных HTTP-заголовков запроса и ответа
       			// $answer_arr['header_request'] = curl_getinfo($curl, CURLINFO_HEADER_OUT); // Заголовки запроса
       			$answer_arr['header_answer'] = $result['headers']; // Заголовки ответа
       		}
   
       		// var_dump($answer_arr['body_answer']);
       		return $answer_arr;
       	}
       ```
   
 * Парадокс в том, что в этой функции раньше использовался курл, который заменили
   на wp_remote_request. С курлом всё чётко. А с wp_remote_request все запросы чётко,
   а загрузка файлов не идёт. От апи приходит ответ, что мол косяк с размерами изображения.
   Вообще малец негодую от того, что вп запрещает родной курл в пользу своих наработок
   считая его опасным, но официальные библиотеку с курлом — не опасны. Но то лирика
   конечно.
    -  Ответ изменён 3 года, 6 месяцев назад пользователем [icopydoc](https://ru.wordpress.org/support/users/icopydoc/).
    -  Ответ изменён 3 года, 6 месяцев назад пользователем [icopydoc](https://ru.wordpress.org/support/users/icopydoc/).

Просмотр 2 ответов — с 1 по 2 (всего 2)

 Тема «Чем заменить new CURLFile?» закрыта для новых ответов.

 * Форум: [Проблемы и решения](https://ru.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 2 ответа
 * 2 участника
 * Последний ответ: [icopydoc](https://ru.wordpress.org/support/users/icopydoc/)
 * Последняя активность: [3 года, 6 месяцев назад](https://ru.wordpress.org/support/topic/%d1%87%d0%b5%d0%bc-%d0%b7%d0%b0%d0%bc%d0%b5%d0%bd%d0%b8%d1%82%d1%8c-new-curlfile/#post-12228052)
 * Статус: нерешённая

## Темы

### Самые популярные темы

### Темы без ответов

### Без вопроса

### Решённые

### Нерешённые

### Все темы
