Как загружать файлы большего размера в php до 50 ГБ - PullRequest
0 голосов
/ 17 июня 2020

Мне нужно сделать загрузку файла php max на 50 ГБ. Сервер имеет возможность, но я не понимаю, как эта задача должна быть выполнена.

Мой первый вопрос: можно ли загрузить файл размером 50 ГБ сразу в php?

Второй вопрос: если возможно, есть ли способ загрузить файл по частям, чтобы он Было бы лучше, если соединение потеряно по какой-либо причине, чтобы оно продолжилось с оставшихся фрагментов, а загруженные фрагменты остались на сервере.

Извините, у меня не так много опыта в PHP, и я никогда не делаю этого задача. Я пытаюсь зайти в Google, но не могу найти решения.

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 сентября 2020

Чтобы загрузить большой файл, вы можете рассмотреть два наиболее важных момента * Я использую приведенный ниже код для загрузки большого файла размером более 5 МБ. Вы можете увеличить размер блока. Хотя я не знаю вашего типа файла. Вы можете попробовать.

/**
 * @param $file
 * @param $fileSize
 * @param $name
 * @return int
 */
public function chunkUpload($file, $fileSize, $applicantID, $name) {
    
    $targetFile     = 'upload/'. $name;
    $chunkSize      = 256; // chunk in bytes
    $uploadStart    = 0;

    $handle = fopen($file, "rb");
    $fp     = fopen($targetFile, 'w');

    # Start uploading
    try {
    
        while($uploadStart < $fileSize) {
        
            $contents = fread($handle, $chunkSize);
            fwrite($fp, $contents);
        
            $uploadStart += strlen($contents);
            fseek($handle, $uploadStart);
        }
    
        fclose($handle);
        fclose($fp);
        
        return 200;
        
    } catch (\Exception $e) {
        return 400;
    }
}
0 голосов
/ 17 июня 2020

1. Это возможно, но это зависит от многих факторов, таких как ваше inte rnet соединение (время ожидания выполнения), PHP версия и PHP настройки.

post_max_size = 0
upload_max_filesize = 0

2. Не следует рассматривать отправку таких больших файлов без разбиения на части. Это может быть достигнуто с использованием других протоколов, кроме HTTP (что не рекомендуется) и с помощью JS / PHP.

Посмотрите другие ответы, потому что этот topi c упоминался много раз, и есть много библиотек для это, то есть Загрузить файлы размером 1 ГБ, используя фрагменты PHP

...