Файл загрузки Ajax: $ _FILES пуст, но файлы существуют в заголовке запроса

Я использую formdata для загрузки файла, когда пользователь бросает файлы на странице. все работает отлично на стороне клиента, а данные файла существуют в заголовке запроса, но когда я print_r ($ _ FILES), он возвращает пустой массив. Нет ограничения на стороне сервера. Я проверил его, загрузив файл вручную.

Детали запроса: http://img.ruphp.com/javascript/csz.PNG

js Код:

$('html').live('drop', function(e) { try { e.stopPropagation(); e.preventDefault(); var files = e.originalEvent.dataTransfer.files || e.target.file || e.dataTransfer.files; var file; var len = files.length; var i =0; var formdata = new FormData(); for ( ; i < len; i++ ) { file = files[i]; if ( window.FileReader ) { reader = new FileReader(); reader.onloadend = function (e) { $('html').removeClass('hover'); }; reader.readAsDataURL(file); } if (formdata) { formdata.append("files[]", file); } } if (formdata) { $.ajax({ url: base_url+"/kh/site/file/upld", type: "POST", data: formdata, processData: false, contentType: false, success : function(res){ console.log(res); }, error: function(res){ console.log(res); } }); } return false; }catch(a){console.log(a.message);} }); 

Код PHP:

 <?php print_r($_FILES); ?> 

Что мне не хватает?

Заранее спасибо!

У меня была такая же проблема, и, оказывается, это не ошибка AJAX. Когда дело доходит до PHP, загрузка ограничена не только upload_max_filesize . При настройке параметров загрузки на вашем сервере учитывайте следующие ini:

max_execution_time : если u задает upload_max_filesize до 100mb, а скрипт имеет max_execution_time 5 секунд, сервер, скорее всего, вернет 404 или 500.

max_input_time : u хочу, чтобы это было достаточно высоким для полной загрузки, в зависимости от upload_max_filesize . В настоящее время интернет-соединения имеют большую пропускную способность для загрузки, но загрузка является сомнительной.

post_max_size : процесс загрузки по определению представляет собой запрос $ _POST, поэтому, если upload_max_filesize имеет значение 100mb, u не может иметь значение post_max_size , которое ниже. Ну, на самом деле можно, но при загрузке, если общий размер загрузки падает между post_max_size и upload_max_filesize , $ _FILES все равно будет пустым.

2 причины вам нужно добавить 1 файл файла сразу

  formData.append( 'fileName', fileData); fileName[] -- will not work 

Добавить наличные деньги: false

  $.ajax({ type: "POST", url: url, data:formData, **cache: false,** contentType: false, processData: false 

также вы можете иметь неправильную конгругенцию dropZone Dropzone.options.myAwesomeDropzone = {

  url: "post_ad.php", method: "post", **enctype:"multipart/form-data",** paramName: "files", addRemoveLinks: true, autoProcessQueue: false, **uploadMultiple: true,** parallelUploads: 100,