Ajax POST输入文件到PHP

Ajax POST input file to PHP

本文关键字:PHP 文件 输入 POST Ajax      更新时间:2023-09-26

我试图将html输入文件POST到我的PHP文件,而不是使用传统的同步html表单。

我面临的问题是,我不认为我的输入文件正确POST到我的PHP文件,因为我的PHP文件说,它没有接收任何POST数据。

HTML:

<form id="uploadForm">
    Begin by uploading a file (<5mb): <br> <br>
    <span class="btn btn-info btn-file" id="buttonColor">
        Browse... <span class="glyphicon glyphicon-folder-open"></span><input type="file" id="uploadBrowseBtn" name="uploadBrowseBtn" onchange='$("#upload-file-info").html($(this).val());'>
    </span>
    <br>
    <span class='label label-info' id="upload-file-info">Choose a file.</span>
    <br> <br>
    <input type="button" class="btn btn-info" id="uploadSubmitBtn" value="Upload">
</form>

JS:

$("#uploadSubmitBtn").click( function() {
    var formData = new FormData($('#uploadForm')[0]);
    $.ajax({
        url: '/upload.php',
        data: formData,
        async: false,
        contentType: false,
        processData: false,
        cache: false,
        type: 'POST',
        success: function(data)
        {
        },
    })
});
PHP:

<?php
    if(empty($_POST)){
        echo true;
    }else{
        echo false;
    }
?>

PHP将提交的文件放在_FILE变量中:http://php.net/manual/en/reserved.variables.files.php

因此,即使发布jquery部分工作正常,您也无法通过检查_POST变量在PHP中是否为空来查看文件是否被接收。

我不太擅长jQuery,但这应该可以满足你的需要。

$( document ).ready(function() {
    $('#uploadSubmitBtn').on('click', function() {
        var file_data = $('#uploadBrowseBtn').prop('files')[0];   
        var form_data = new FormData();
        form_data.append('file', file_data);                        
        $.ajax({
            url: 'upload.php',
            dataType: 'text',
            cache: false,
            contentType: false,
            processData: false,
            data: form_data,                         
            type: 'post',
            success: function(data){
                $('#uploadForm').html(data);
            }
        });
    });
});
<form id="uploadForm">
<input type="file" id="uploadBrowseBtn">
<input type="button" id="uploadSubmitBtn" value="Upload">
</form>
<?php
    var_dump($_POST);   // empty when received a file
    var_dump($_FILES);  // filled when received a file
?>

这个问题:jQuery AJAX文件上传PHP回答了你的问题,并有一个完美的解释,它实际上是做什么的