猿问

通过Ajax上传img时如何发送文件信息

我正在尝试拆分上传到ajax方法的图像文件。所有的html和JS都在一个文件中,然后我组成了一个包含所有PHP的PHP文件。


我正在努力的是,我不确定如何将图像文件信息发送到php文件,然后如何使其余的php照常工作。


截至目前,这行代码$p_img = $_POST['file'];遇到了未定义的索引错误。但是,即使正在填充该文件,我也不确定在分离的文件中是否可以正常使用。


无论如何,我可以将第一个PHP函数保留UploadFile在带有HTML和JS的文件中,然后将该函数发送到PHP文件中吗?


如果没有,我该怎么办?


的HTML


<form action="" method="POST" id="projectForm" enctype="multipart/form-data">

    <label>Project Name</label>

    <input type="text" class="input block" name="p_name">

    <label>Project Img</label>

    <input type="file" id="file" name="file" class="file-input block">

    <button id="submit">Submit Project</button>

</form>

JS


$('#projectForm').validate({

        ignore: [],

        rules: {

            p_name: {

                required: true,

                minlength: 5

            },

            p_alt: {

                required: true,

                minlength: 2

            }

        },

        messages: {

            p_name: {

                required: "Please enter the project name",

                minlength: "The project name is too short"

            },

            p_alt: {

                required: "Please enter the alt text",

                minlength: "Your alt text is too short"

            }

        },

        submitHandler: function (form, e) {

            e.preventDefault();

            var formData = new FormData(form);

            category = $(this).data('category');


            console.log(category);


            $.ajax({

                url: '/php/projectSend.php',

                type: 'POST',

                data: formData,

                success: function (data) {

                  console.log(data);

                },

                contentType: false,

                processData: false,

                error: function (xhr, textStatus, errorThrown) {

                    alert(textStatus + " | " + errorThrown);

                    alert('There are currently no project images for this selection');

                }

            });

        }

    });


守着星空守着你
浏览 170回答 2
2回答

慕运维8079593

那是因为您试图通过$_POST不包含文件的数组访问上载的文件。您正在寻找的是$_FILES。参考

繁花不似锦

我认为您要发送到FormData的表单对象不是FormData期望的。var form = document.forms.namedItem("fileinfo");form.addEventListener('submit', function() {&nbsp; var oOutput = document.querySelector("div"),&nbsp; &nbsp; &nbsp; oData = new FormData(form);}你可以阅读更多
随时随地看视频慕课网APP
我要回答