输入类型文件无返回值


input type file no returned value

祝大家美好的一天,

我正在尝试获取正在上传的文件的名称/位置/大小。但似乎每次我在控制台中查看时都不会显示任何内容。但我在这里关注了一切 http://www.w3schools.com/php/php_file_upload.asp

索引.php

<form id="formAction" method="POST" action="add_item.php" enctype="multipart/form-data" >
        <input id="loc" type="file" name="file" />
        <input type="submit" name="submit" value="Add" />
</form>

JavaScript

$("form#formAction").on("submit", function (e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: "add_item.php",
            data: $(this).serialize(),
            success: function (data) {
                console.log(data);
            },
            error: function() {
                alert('Some fields are empty.');
            }
        });
    });

add_item.php

// fetching data
echo $_FILES['file']['tmp_name'];

似乎缺少什么?任何帮助将不胜感激。谢谢!

实际上有两个问题:

首先,您错过了表单enctype属性。这对于纯表单提交(没有 ajax)是必需的:

<form id="formAction" method="POST" action="add_item.php" enctype="multipart/form-data">

其次,jquery的原生$.ajax不支持文件上传,但你可以使用插件(如 http://jquery.malsup.com/form/#file-upload)进行管理。