Dropzone JS没有传递到PHP $ _FILES

时间:2019-03-06 19:17:55

标签: javascript php dropzone.js

我正在使用Dropzone JS构建图像上传器,允许您一次上传多个图像:

HTML:

<div class="dropzone" id="mydroppyzone"><div class="dz-message" data-dz-message><span><i class="fas fa-images"></i> Add Photos</span></div></div>

JS:

$("#mydroppyzone").dropzone({
    url: "process_edit_event.php",
    autoProcessQueue: false,
    maxFiles: 4,
    maxFilesize: 2,
    uploadMultiple: true,
    parallelUploads: 100,
    acceptedFiles: ".jpeg,.jpg,.png",
    init: function () {

        var myDropzone = this;

        $("#editEventBtn").click(function (e) {

            var editEventFormIsValid = $('#editEventFeaturedForm').valid();

            if (editEventFormIsValid) {

                if (myDropzone.getQueuedFiles().length > 0) {   
                    e.preventDefault();
                    myDropzone.processQueue(); 
                } else {                

                }

            }               

        }); 

      myDropzone.on('success', function (file, response) {

        console.log(JSON.stringify(file.upload.filename));

        var form = document.getElementById('editEventFeaturedForm');

        $("#editEventFeaturedForm").append($('<input type="hidden" ' +
        'name="theFiles[]" ' +
        'value="' + file.upload.filename + '">'));

        form.submit();

      });
   },
   sending: function (file, xhr, formData) {
       formData.append("name", $('#name').val());
   }
});

process_edit_event.php

// Upload the event photos to the server

    $ds = DIRECTORY_SEPARATOR;

    $storeFolder = 'user_images/events';

    if (!empty($_FILES)) {

        $tempFile = $_FILES['file']['tmp_name'];         

        $targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;

        $targetFile =  $targetPath. $_FILES['file']['name'];

        foreach($_FILES['file']['tmp_name'] as $key => $value) {
            $tempFile = $_FILES['file']['tmp_name'][$key];
            $targetFile =  $targetPath . $_FILES['file']['name'][$key];
            move_uploaded_file($tempFile,$targetFile);
        }

    }

当我在JavaScript端控制台进行所有日志记录时,映像将按应有的方式进行处理,但在PHP端$ _FILES始终为空。

我很困惑,试图弄清楚为什么$ _FILES为空。我在JavaScript中缺少没有传递到PHP的东西吗?感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题是表单发送了2次,因为在上传文件的时候,upload.php是通过ajax自动执行的。

你必须取消表单的提交,因为当我们点击它时,它已经是第二次执行了,因此没有找到任何要上传的文件。