Загрузка файла через POST не работает с медленным интернетом - PullRequest
0 голосов
/ 21 марта 2020

У меня есть скрипт PHP, вызываемый с помощью Javascript AJAX. Это простой скрипт для сохранения файла на сервере. Это POST-запрос с «image», который является ключом загруженного файла.

Когда мой inte rnet работает медленно (загрузка около 50 ko / s), я заметил, что скрипт php не может скопировать файл. Я получаю 400 и тело ответа "некоторые проблемы с загрузкой" (см. Код ниже). Часть Javascript в порядке, webtools (и время загрузки) показывают, что это действительно POST-запрос и файл отправляется на сервер.

Как скорость соединения может повлиять на результат is_uploaded_file($_FILES['image']['tmp_name']) ? Есть ли скрытый тайм-аут загрузки, по которому я не смог найти документацию?

Сокращенный код:

<?php
// bad request if not POST with 'auth' and 'image'
if($_SERVER['REQUEST_METHOD'] !== 'POST' || !array_key_exists('image', $_FILES))
{
    http_response_code(400);
    exit();
}

// added after noticing issues with move_uploaded_file, to help debugging
// how can this fail?
if(!is_uploaded_file($_FILES['image']['tmp_name']))
{
    http_response_code(400);
    echo('some upload issue');
    exit();
}

$filePath = 'uploads/test';

// save upload and print link
if(!move_uploaded_file($_FILES['image']['tmp_name'], $filePath))
{
    http_response_code(500);
    exit();
}
http_response_code(200);
echo('https://example.com/' . $filePath);

Фактический код примерно в два раза длиннее, я удалил аутентификацию и нашел $ Filepath.

...