簡體   English   中英

通過PHP和AJAX上傳PDF文件時出現未定義的索引錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM