У меня ужасное время, когда я пытаюсь передать файл из представления в контроллер, используя Ajax с CakePHP 2.10.7.
Мой взгляд имеет следующий ввод:
<div id="staff-bg-image-container">
<!-- Image uploading box exists here. -->
</div>
<input type="file" id="background_image_file" name="background_image_file" style="display:none;" accept="image/png, image/jpeg">
И мой JavaScript выглядит так:
$('#staff-bg-image-container').on('click', () => $('#background_image_file').trigger('click') );
$('#background_image_file').on('change', upload_background);
function upload_background()
{
var file = this.files[0];
data = new FormData();
data.append('file', file);
$.ajax({
url: '/staff/ajaxUploadBackgroundImage',
type: 'POST',
data: data,
contentType: false,
processData: false,
cache: false,
success: function(res){
console.log(res);
},
});
}
Но когда я отправляю этот запрос контроллеру, массив $this->request->data
пуст. Я пытался сделать это с помощью XMLHttpRequest вместо jQuery, но результат был таким же. Почему CakePHP не распознает файл?
Изменить: я могу получить доступ к файлу, используя массив глобальных переменных $_FILES. Однако, согласно документации CakePHP, он должен присутствовать в массиве данных запроса. Я был бы признателен, если бы вы могли сказать мне, почему это не так.