Я работаю над проектом, в котором требуется загрузить файл PDF на сервер в формате файла, например, /home/xyz/proect_dir/upload/file_name.pdf
, и сохранить путь к файлу в базе данных MySQL.Я загружаю файл PDF, используя PHP и AJAX.Я получаю следующую ошибку.
Примечание: неопределенный индекс: uploaded_pdf
Вот мой код:
upload.html
<form action="#" method="post" id="frm_upload_pdf" enctype="multipart/form-data">
<input type="file" name="uploaded_pdf" id="uploaded_pdf" accept="application/pdf" class="upload" />
<button type="submit" id="btnUploadPaper">Save</button>
</form>
upload.js
$('#frm_upload_pdf').validate({
rules: {
uploaded_pdf: { required: true }
},
messages: {
uploaded_pdf: { required: "Select pdf file" }
},
errorPlacement: function(error, element) {
error.insertAfter(element);
},
submitHandler: function() {
uploadPDF();
}
});
function uploadPDF() {
$.ajax({
url: 'upload_processor.php',
type: 'POST',
data: $('#frm_upload_pdf').serialize(),
success: function (data) {
alert(data);
}
});
}
upload_processor.php
public function uploadPaper() {
$fileName = $_FILES['uploaded_pdf']['name'];
$temp_name = $_FILES['uploaded_pdf']['tmp_name'];
if (isset($fileName)) {
if (!empty($fileName)) {
$fileType = pathinfo(FILE_UPLOAD_ROOT.$fileName, PATHINFO_EXTENSION);
$allowTypes = array('pdf');
if (in_array($fileType, $allowTypes, true)) {
//upload file to server
return move_uploaded_file($temp_name, FILE_UPLOAD_ROOT.$fileName) ? true : false;
}
return false;
}
return false;
}
return false;
}
Во время отладки я обнаружил, что ajax не публикует данные файла как $_FILES
, следовательно, он дает вышеошибка неопределенного индекса.Любая идея, почему он не публикует данные файла как $_FILES
или я что-то здесь упускаю.