Я использую 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,