Я пытаюсь загрузить файлы на сервер, используя PHP.
Я создал простой ввод файла и кнопку отправки и написал функцию PHP для обработки этого запроса. Первоначально я пытался использовать эту библиотеку https://github.com/Gargron/fileupload, которая работала нормально, но я подумал, что могу чего-то не хватает, поэтому написал код php сам.
Он мгновенно загружает небольшие файлы. Под маленьким я подразумеваю максимум 1 МБ.
Я хочу загрузить файлы размером до 2–3 ГБ или, возможно, больше.
Итак, я попробовал файл размером 150 МБ, который передался почти мгновенно, так как у меня очень высокий пропускная способность восходящего канала, поэтому для его передачи потребовалось несколько секунд, но он так и не поступил на сервер, я понятия не имею, почему, когда я пытаюсь с небольшими файлами, они go мгновенно попадают в папку сервера.
Я попытался использовать файл размером 25 МБ, и браузер показал, что загрузка составляет 100% менее чем за 5 секунд, но затем потребовалось 4 минуты, чтобы файл попал в целевую папку на сервере.
I Я использую Ubuntu 20.04 LTS, Apache2, PHP v7.3.20.
Я проверил PHP ini и увеличил post_max_size и upload_max_filesize в соответствии с моими требованиями, поэтому я не уверен, что мне не хватает.
HTML Форма
<form action="pages/upload-video" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<input type="file" name="fileToUpload">
<br><br>
<input type="submit" value="upload">
</form>
PHP функция
public function upload_video() {
$target_dir = VIDEO_PATH;
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
}
Дальше пробовал оставить только
public function upload_video() {
print_r($_FILES['fileToUpload']);
}
А на это уходит столько время выполнить функцию. Не уверен, что здесь происходит. Никогда раньше не испытывал этого.