FormData附加不起作用

nec*_*ace 25 html javascript forms ajax jquery

我写这个是为了使用inputHTML中的元素将图像上传到我的本地Apache webserver .该file记录为不为空,但为什么是form_data完全是空的?

$('#upload-image').change(function(e){
    var file = e.target.files[0];
    var imageType = /image.*/;
    if (!file.type.match(imageType))
        return;
    console.log(file);
    var form_data = new FormData();
    form_data.append('file', file);
    console.log(form_data);
    $.ajax({
        url: 'http://localhost/upload.php',
        cache: false,
        contentType: false,
        processData: false,
        data: form_data,
        type: 'POST',
        success: function(response){
            console.log(response);
        },
        error: function(error){
            console.log(error);
        }
    });

});
Run Code Online (Sandbox Code Playgroud)

这是我upload.php在本地网络服务器上的

<?php
    header('Access-Control-Allow-Origin: *');
    if ( 0 < $_FILES['file']['error'] ) {
        echo 'Error: ' . $_FILES['file']['error'] . '<br>';
    }
    else {
        move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
        $target_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $_FILES['file']['name'];
        echo $target_path;
    }
?>
Run Code Online (Sandbox Code Playgroud)

console.log(response)日志PHP文件的所有行代码,而不是返回的结果,echo

ade*_*neo 43

仅使用console.log(formData)它记录formData对象时总是返回空,因为您无法记录formData.

如果您只需在发送之前记录它,则可以使用entries()获取formData对象中的条目

$('#upload-image').change(function(e) {
    var file = e.target.files[0];
    var imageType = /image.*/;

    if (!file.type.match(imageType)) return;

    var form_data = new FormData();
    form_data.append('file', file);

    for (var key of form_data.entries()) {
        console.log(key[0] + ', ' + key[1]);
    }

    $.ajax({
        url: 'http://localhost/upload.php',
        cache: false,
        contentType: false,
        processData: false,
        data: form_data,
        type: 'POST',
        success: function(response) {
            console.log(response);
        },
        error: function(error) {
            console.log(error);
        }
    });

});
Run Code Online (Sandbox Code Playgroud)