Как передать файл с сервера PHP на сервер C# - PullRequest
0 голосов
/ 26 мая 2020

У меня два сервера. Первый - PHP, второй - C# (. NET Core). Мне нужно передать файл (jpeg или видео) с сервера php на сервер NET. Если я использую http-клиент, такой как Postman или Insomnia, сервер C# правильно принимает мой файл. Обратите внимание на простой код C#. Это сигнатура моего метода действия:

    [HttpPost]
    [DisableRequestSizeLimit]
    [Route("")]
    public async Task<IActionResult> AddFile(IFormFile file)
    { ... }

Вот результат прямого запроса на действие с помощью http-клиента Insomnia:

enter image description here

Прекрасно работает.

Но когда я пытаюсь сделать то же самое из 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 всегда равно нулю? Я что-то упускаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...