загружать большие файлы с помощью php, apache - PullRequest
10 голосов
/ 09 ноября 2009

Я хочу загрузить файлы размером около 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

Ответы [ 5 ]

7 голосов
/ 09 ноября 2009

Я бы также проверил максимальное время ввода и время выполнения скрипта. Они оба в настоящее время установлены на 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
3 голосов
/ 31 мая 2013

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

 upload_max_filesize = 150M
 post_max_size = 150M
 memory_limit = 512M
 max_execution_time = 1200 
3 голосов
/ 09 ноября 2009

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

Загрузка файлов PHP info

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

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

1 голос
/ 20 июня 2016

Частотная загрузка файлов с использованием ajax

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

  1. Blueimp - 111KB, https://github.com/blueimp/jQuery-File-Upload
  2. Plupload - 359 КБ, разработанный для TinyMCE, поддерживает HTML5 для Flash, Gears, Silverlight и iFrame, http://www.plupload.com/
  3. Fineuploader - 944 КБ, http://fineuploader.com/

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

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

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

...