Загружать большие файлы с помощью php, apache

Я хочу загрузить файлы размером около 150 МБ с помощью PHP и Apache-сервера. С моим кодом я могу загрузить до 5 МБ

<?php

$path = $_COOKIE['Mypath'];
$target_path = "uploads/".$path ;
if(!isDir($target_path))
{
    mkdir($target_path);
}
    # Do uploading here
   $target_path = "uploads/".$path ."/";
   $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 
   if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
   {
      header("Location: somepage.html");
   } 
   else
   {
        echo "File not uploaded";
   }

?>

php.ini

max_execution_time = 300     ; Maximum execution time of each script, in seconds
max_input_time = 300    ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M      ; Maximum amount of memory a script may consume (128MB)
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =

; Maximum allowed size for uploaded files.
upload_max_filesize = 200M

Ответ 1

Я также проверил бы максимальное время ввода и script время выполнения. Они оба установлены на 300 секунд (5 минут). Это означало бы, что пользователь должен загрузить 150 мб (1200 мегабайт) за 300 секунд. Это означает, что конечному пользователю потребуется твердое и последовательное соединение 4 Мбит/с (1200/300 = 4), чтобы загрузить этот файл в назначенное время.

Я бы рекомендовал нечто подобное этим настройкам:

file_uploads = On
upload_tmp_dir = "/your/tmp/dir"
upload_max_filesize = 150M ; You may want to bump this to 151M if you have problems with 150 mb files
max_execution_time = 1200 ; 20 minutes, which is a 150 mb file at 1mbps
max_input_time = 1200

Ответ 2

Если вы используете общий сервер и хотите загружать большие файлы, создайте файл php.ini, запишите в него следующий код и поместите его в папку, в которую вы загружаете файлы, , т.е. место назначения ваших загруженных файлов.

 upload_max_filesize = 150M
 post_max_size = 150M
 memory_limit = 512M
 max_execution_time = 1200 

Ответ 3

вот некоторая хорошая информация о загрузке файлов в PHP

Загрузить файлы PHP info

Или вы также можете прочитать его здесь, используя апплет Java, который загружает файл в куски. Поиск Jupload

php/Apache Config Вам нужно будет изменить значение upload_max_filesize и post_max_size на самый большой размер файла, который вы хотите разрешить. Затем перезапустите apache и все должно работать.

Ответ 4

Загрузка файлов каналов с помощью ajax

Я тестировал множество решений, и мой выбор - Blueimp. Вот мой рейтинг:

Другое проверенное мной решение

  1. Uploadify - http://www.uploadify.com/
  2. Возобновляемый - https://github.com/23/resumable.js
  3. Dropzonejs - http://www.dropzonejs.com/
  4. MooUpload
  5. Fancyupload
  6. Hayageek http://hayageek.com/docs/jquery-upload-file.php

Ответ 5

Вы можете попробовать использовать потоки AJAX и PHP, таким образом, использование памяти будет меньше 1 МБ, независимо от размера файла.