Бортовой журнал Ктулху

Ajax file upload

Так что бы не искать каждый раз, оставляю рабочий на 100% пример загрузки файла из формы, сгенерированной из js.

 

Форма, вставляемая в html.

let forma = '' +
'<form method="post" enctype="multipart/form-data" id="uploadAttachment">' +
'<label for="file">Choose file to upload</label>' +
'<input type="file" id="file" name="file">' +
'<input type="hidden" name="id" value="16">' +
'<button type="button" onclick="upfile($(this))">Submit</button>' +
'</form>'
;
 
function upfile(t) {
 let form = $('body').find('form#uploadAttachment');
 let file_data = form.find('input[type=file]').prop('files')[0];
 console.log(file_data)
 let form_data = new FormData();
 form_data.append('file', file_data);
 alert(form_data);
 $.ajax({
 url: 'script.php',
 dataType: 'text',
 cache: false,
 contentType: false,
 processData: false,
 data: form_data,
 type: 'post',
 success: function(php_script_response){
 alert(php_script_response);
 }
 });
}

Содержимое файла script.php:

 

 var_dump($_FILES);

В результате работы формы на сервере получаем:

array(1) {
 ["file"]=>
 array(5) {
 ["name"]=>
 string(59) "pdf.pdf"
 ["type"]=>
 string(15) "application/pdf"
 ["tmp_name"]=>
 string(14) "/tmp/phpqfBW7H"
 ["error"]=>
 int(0)
 ["size"]=>
 int(37108)
 }
}