0

我拖放了多个文件的上传,除此之外,我还有一个输入文本字段,上传文件时我需要该值。我已经检查了这个问题(带有附加数据的 jQuery 文件上传)并且不符合我的需要。

下面是我的 HTML 代码。

<script type="text/javascript" src="custom/js/uploader.js"></script>
<div class="container">
    <div class="row">
        <div class="col-sm-3 col-md-6 col-lg-6">
            <h3 class="alert alert-info">Drag and drop Multiple PDF Files</h3><br />
            <div id="uploaded_file"></div>
            <div class="file_drag_area alert alert-warning">
                Drop Files Here
            </div>

        </div>
        <input type="text" class="form-control" id="refNum" name="refNum"/>
    </div>
</div>

我的 jQuery;

$(document).ready(function(){

    $('.file_drag_area').on('dragover', function(){
        $(this).addClass('file_drag_over');
        return false;
    });
    $('.file_drag_area').on('dragleave', function(){
        $(this).removeClass('file_drag_over');
        return false;
    });
    $('.file_drag_area').on('drop', function(e){
        e.preventDefault();
        $(this).removeClass('file_drag_over');
        var formData = new FormData();
        var files_list = e.originalEvent.dataTransfer.files;

        var refNum = $("#refNum").val();


        for(var i=0; i<files_list.length; i++)
        {
            formData.append('file[]', files_list[i]);
        }

        $.ajax({
            url:"php_action/upload.php",
            method:"POST",
            data: formData, refNum: refNum,
            contentType:false,
            cache: false,
            processData: false,
            success:function(data){
                $('#uploaded_file').html(data);

                $(".alert-success").delay(500).show(10, function() {
                    $(this).delay(3000).hide(10, function() {
                        $(this).remove();
                    });
                }); // /.alert
            }
        })
    });
});

最后,我的 PHP。

$output = '';
if(isset($_FILES['file']['name'][0]))
{
    $refNum = $_POST["refNum"];

    foreach($_FILES['file']['name'] as $keys => $values)
    {
        $random_no        = rand();
        $split_file_name  = explode('.',$values);
        $new_file_name    = $random_no.$split_file_name[0].'.'.$split_file_name[1];

        if(move_uploaded_file($_FILES['file']['tmp_name'][$keys], 'PDFUpload/' . $new_file_name))
        {
            $sql        = "INSERT INTO upload (order_id, file_name, uploaded_date) 
                           VALUES('$refNum','".$new_file_name."','$dateTimeNiBorgy')";

            $result     = mysqli_query($connect, $sql);

            if($result == 1)
            {
                $msg    = '<div class="alert alert-success">Files uploaded successfully!</div>';
            }
            else
            {
                $msg    = '<div class="alert alert-danger">Some error occurred, Please try again!</div>';
            }
            $output = $msg;

        }
    }
}

echo $output;

现在上传和保存到数据库的脚本工作正常。但是拖动文件后,我得到了一个错误

注意:未定义索引:第 21 行 C:\xampp\htdocs\php_action\upload.php 中的 refNum

我的问题是,如何refNum在上传后立即获取输入字段的值?

4

1 回答 1

0

在您的 js 文件中:该属性data需要是字符串或对象。

使用以下命令更改数据属性:

data:{"formData":formData, "refNum":refNum},
于 2019-08-26T08:34:48.907 回答