У меня два сервера. Первый - PHP, второй - C# (. NET Core). Мне нужно передать файл (jpeg или видео) с сервера php на сервер NET. Если я использую http-клиент, такой как Postman или Insomnia, сервер C# правильно принимает мой файл. Обратите внимание на простой код C#. Это сигнатура моего метода действия:
[HttpPost]
[DisableRequestSizeLimit]
[Route("")]
public async Task<IActionResult> AddFile(IFormFile file)
{ ... }
Вот результат прямого запроса на действие с помощью http-клиента Insomnia:
Прекрасно работает.
Но когда я пытаюсь сделать то же самое из php (я использую этот http-клиент), я всегда получаю null
для:
[HttpPost]
[DisableRequestSizeLimit]
[Route("")]
public async Task<IActionResult> AddFile(IFormFile file // <----------- HERE IS NULL)
{ ... }
Это пример моего php кода:
// take file from the form
if ($_FILES['file']['tmp_name'] != '') {
$extFile = end(explode('.', $_FILES['file']['name']));
if (!in_array($extFile, ['png', 'jpeg', 'jpg'])) {
show_error('Bad extension!!!!!');
}
$file = md5(microtime(true) . mt_rand(1111, 999999)) . '.' . $extFile;
copy($_FILES['file']['tmp_name'], $this->imagePath . $file);
// make new file resource
$fileResource = fopen($this->imagePath . $file, 'r');
// try to pass it on the C# server
$result = Requests::post('<url to C# server>',
['Content-Type' => 'multipart/form-data'],
['file' => $fileResource]);
fclose($fileResource);
}
Все операции выполняются на моем локальном хосте. Почему IFormFile file
всегда равно нулю? Я что-то упускаю?