0

请参考问题:Jquery Image Upload in Form with Plugin变为Null

我正在尝试使用 JQuery Ajax 提交表单并尝试在 PHP 文件中检索并保存。对于特定形式,有两个文件输入。

  1. 图片
  2. 笔记

当我使用 var_dump($_FILES) 进行调试时,我只能看到 Note 的数组,但看不到 Image。对于图像上传,我使用了一个名为 FancyUpload 的插件,这可能是导致问题的原因。下面是表格

<form id="form" action="add.php" method="post" autocomplete="off" enctype="multipart/form-data">
    <div>
        <input aria-label="cxname" id="cxname" name="cxname" class="form-control" placeholder="Name" type="text">
    </div>
    <div>
        <select name="sales" id="sales" class="SlectBox form-control">
            <option value='0'>Sales</option>
            <?php echo sales(); ?>
        </select>
    </div>
    <div>
        <input class="custom-file-input" placeholder="choose note" name="note" id="note" type="file">
        <label class="custom-file-label">Choose Note</label>
    </div>
    <div>
        <input class="custom-file-input" placeholder="Choose Image" name="image" id="image" type="file" multiple>
    </div>
    <div>
        <button id="submit" class="btn btn-primary btn-size">Add</button>
    </div>
</form>

下面的 Jquery 及其花哨的上传器类

<!-- JQuery min js -->
<script src="assets/plugins/jquery/jquery.min.js"></script>
<script src="assets/plugins/jquery-ui/ui/widget.js"></script>
<script src="assets/plugins/fancyuploder/jquery.ui.widget.js"></script>
<script src="assets/plugins/fancyuploder/jquery.fileupload.js"></script>
<script src="assets/plugins/fancyuploder/jquery.iframe-transport.js"></script>
<script src="assets/plugins/fancyuploder/jquery.fancy-fileupload.js"></script>
<script>
$(document).ready(function(e){
    var image = $('#image').FancyFileUpload({
        maxfilesize : 1000000,
        params : {
            action : 'form'
        },
        autoUpload: false
    });
    $("#form").on('submit', function(e){
        e.preventDefault();
        var fd = new FormData();
        fd.append('pimage', $(image)[0].files[0]);
        fd.append('deliveryNote', $("#note")[0].files[0]);
        fd.append('cxname', $('input[name=cxname]').val());
        fd.append('sales', $('select[name=sales]').val());
        $.ajax({
            type: 'POST',
            url: 'add.php',
            data: fd,
            dataType: 'json',
            processData:false,
            contentType: false,
            cache: false,
            async: false,
            success: function(response){
                $('.statusMsg').html('');
                if(response.status == 1){
                    $('#form')[0].reset();
                    $('.statusMsg').html('<p class="alert alert-success">'+response.message+'</p>');
                    alert('received');
                }else{
                    $('.statusMsg').html(alert(response.message));
                }
                $('#form').css("opacity","");
                $(".submit").removeAttr("disabled");
            }
        });
    });
});

检索 PHP

upload_dir = 'uploads/';
pdf_dir = 'doc/';

    if (isset($_POST['cxname']) || isset($_POST['deliveryNote']) || isset($_POST['pimage']) || isset($_POST['sales'])) //even tried with ($_FILES['pimage'])
    {
        $cxname=$_POST['cxname'];
        $sales=$_POST['sales'];
    
        var_dump($_FILES);
    
        //MOVE IMAGE -> Comes Empty
        if(!empty($_FILES['pimage']['tmp_name']))
        {
            $temp = $_FILES['pimage']['tmp_name'];
            $name = $_FILES['pimage']['name'];
            $result = move_uploaded_file($temp,$upload_dir.$name);
            $response['status'] = 1; 
            $response['message'] = 'IMAGE HAS BEEN SAVED'; 
        }
        else{
            $name = '';
            $response['status'] = 0; 
            $response['message'] = 'IMAGE CAME EMPTY!'; 
        }
    
        //SAVE NOTE
        $_pdfDN = $_FILES['deliveryNote']['name'];
        $Tempfile = $_FILES['deliveryNote']['tmp_name'];
        $_pdfResult = move_uploaded_file($Tempfile,$pdf_dir.$_pdfDN);
    }

如果我没有图像上传插件,它工作正常。请指教。

4

0 回答 0