Ошибка загрузки Ajax-файла с помощью formData для больших файлов - PullRequest
0 голосов
/ 28 мая 2019

Я посылаю через ajax объект FormData, содержащий загружаемые файлы, но когда я пытаюсь загрузить большие файлы (> 5M), я получаю пустые переменные $ _POST и $ _FILES.

Читая столько постов об этой проблеме, я применил почти все, но не сработало.

I've tried on php.ini:
- max_execution_time = 300
- max_input_time = 300
- post_max_size = 2048M (large but compulsory)
- upload_max_filesize = 2048M (large but compulsory)
- max_input_vars = 2000 (trying different values)

On HTTP/HTTPS directives (some have no sense but I was trying in a desperately way to see the behaviour):
- FcgidConnectTimeout 300
- FcgidIOTimeout 300
- FcgidIdleTimeout 300
- FcgidBusyTimeout 300
- IPCCommTimeout 9999
- FcgidMaxRequestLen 21474836480

Мой код выглядит следующим образом:

var form = $('form[name="myform"]');
var formData = new FormData(form[0]);

/*
Also tried this:
   var file = $("form[name='myform'] input[name='filename']");
   formData.append("my_upload", (file[0]).files[0]);
*/

$.ajax({
   type: 'post',
   data: formData,
   dataType: 'json',
   async: true,
   url: '/mysite/controllers/Controller.php',
   processData: false,
   contentType: false,
   ...
});

Итак, для файлов <5M все отлично работает как на моем локальном сервере, так и на рабочем сервере. Для файлов> 5M работает только на моем локальном сервере, но не на рабочем сервере (где я получаю пустые переменные $ _POST и $ _FILES). Обычно они имеют конфигурацию некоторых переменных, хотя рабочий сервер находится под WAF на CloudFlare.

...