[英]Undefined index error while uploading the PDF file through PHP & AJAX
我正在一個項目中,該項目要求以文件格式(例如/home/xyz/proect_dir/upload/file_name.pdf
將PDF文件上傳到服務器,並將文件路徑存儲到MySQL數據庫。 我正在使用PHP和AJAX上傳PDF文件。 我收到以下錯誤。
注意:未定義的索引: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
發布文件數據,或者我在這里什么都沒有。
我已經如下重新編寫了您的ajax和php代碼。
首先,您需要在PHP代碼所在的目錄中創建一個名為pdf的文件夾。
在下面運行以下經過測試的代碼及其工作。 讓我知道它對您有用
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function (e) {
$("#uploadForm").on('submit',(function(e) {
e.preventDefault();
$.ajax({
url: "upload_processor.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data)
{
$("#targetLayer").html(data);
$("#errorLayer").html(data);
},
error: function()
{
}
});
}));
});
</script>
</head>
<body>
<div>
<form id="uploadForm" action="upload_processor.php" method="post">
<div id="targetLayer"></div>
<div id="errorLayer"></div>
<div id="uploadFormLayer">
<input name="uploaded_pdf" type="file" class="inputFile" /><br/>
<input type="submit" value="Submit" class="btnSubmit" />
</form>
</div>
</div>
</body>
</html>
PHP
<?php
if(is_array($_FILES)) {
if(is_uploaded_file($_FILES['uploaded_pdf']['tmp_name'])) {
$fileName = $_FILES['uploaded_pdf']['name'];
$sourcePath = $_FILES['uploaded_pdf']['tmp_name'];
$targetPath = "pdf/".$_FILES['uploaded_pdf']['name'];
if($fileName ==''){
echo "<div id='errorLayer'>Please select file</div>";
exit;
}
$fileType = pathinfo($fileName, PATHINFO_EXTENSION);
$allowTypes = array('pdf');
if (!in_array($fileType, $allowTypes, true)) {
echo "<div id='errorLayer'>File type is invalid</div>";
exit;
}
if(move_uploaded_file($sourcePath,$targetPath)) {
echo "<div id='targetLayer'>File uploaded successfully</div>";
?>
<?php
}
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.