【问题标题】:Got an empty $_POST array with a form得到一个带有表单的空 $_POST 数组
【发布时间】:2017-07-01 00:55:05
【问题描述】:

我在上传文件时遇到了一个空的 $_POST 数组的问题。

这是表格:

<div class="popup">
    <h3>UPLOAD</h3>
        <a class="close" href="#">&times;</a>
        <div class="content">
            <form
                id="uploadForm"
                method="post" 
                enctype="multipart/form-data" 
                action="resources/upload.php?dir=<?php if(isset($_GET['dir'])){echo $_GET['dir'];} ?>" 
                enctype="multipart/form-data">

                <input type="file" name="fichier" id="file" class="inputfile"/>
                <label for="file">Choisir un fichier</label><br>
            </form>
            <button onClick="submitUpload();" id="smbtBtt">Uploader</button>
        </div>
</div>

这是 submitUpload 函数:

function submitUpload()
{
    if(document.getElementById("file").value != ""){
        document.getElementById("uploadForm").submit();
    }
    else
    {
        alert("Please select a file!");
    }

}

然后在 upload.php 文件中,我只是 var_dump() 数组 $_FILES 和 $_POST

现在是早上 6 点,我连续 5 小时编程,所以这就是我问的原因:)。

非常感谢!

【问题讨论】:

  • 你已经使用了 var formData= new formdata();获取所有文件数据的函数..
  • 在表单关闭前使用提交按钮。检查此更改
  • @Gulshan 没有任何改变... :/
  • 你需要检查$_FILES而不是$_POST
  • 您在表单中使用了 file 类型的字段元素。所以你需要使用 $_FILES 而不是 $_POST

标签: php file post upload


【解决方案1】:

使用此代码。可能对你有帮助

$('form#uploadForm').submit(function(e){
    var formData = new FormData(this);

$.ajax({
url: "upload_file.php",            
type: "POST",
data:  formData,
mimeType:"multipart/form-data",
contentType: false,
cache: false,
processData:false,
success: function(data)
{
    alert(data);
}
});
return false;
});

【讨论】:

  • 我还能像以前一样使用我的字段吗?
  • @Alteus 检查 formData 变量..它会获取您输入文件的所有数据
【解决方案2】:
<div class="popup">
    <h3>UPLOAD</h3>
        <a class="close" href="#">&times;</a>
        <div class="content">
            <form
                id="uploadForm"
                method="post" 
                enctype="multipart/form-data" 
                action="resources/upload.php?dir=<?php if(isset($_GET['dir'])){echo $_GET['dir'];} ?>" 
                enctype="multipart/form-data">

                <input type="file" name="fichier" id="file" class="inputfile"/>
                <label for="file">Choisir un fichier</label><br>
            </form>
            <button onClick="submitUpload();" id="smbtBtt">Uploader</button>
        </div>
</div>

<script type="text/javascript">
    function submitUpload()
{
    if(document.getElementById("file").value != ""){
        document.getElementById("uploadForm").submit();
    }
    else
    {
        alert("Please select a file!");
    }
}
</script>

上传.php

<?php
$test=$_FILES["fichier"]["tmp_name"];

echo $test;

?>

【讨论】:

  • 我需要使用 POST 方法。您不能使用 GET 传输文件。这是我在php中的POST数组是空的..
  • 您可以使用 get 方法获取 $_GET['fichier']。如果您使用的是 POST 方法,我会尽快更新答案
【解决方案3】:

在您的表单中,您使用的是文件类型字段元素。您必须使用 '$_FILES' 而不是 $_POST。试试这个

【讨论】:

    【解决方案4】:

    抱歉,我无法让 $FILES 和 $POST 数组同时工作,所以我找到了另一个没有它们的解决方案。仍然是每个人的坦克。

    【讨论】:

    • 你找到了什么解决方案。你的代码一定有错误,因为你不能同时使用POST和FILE
    • 在您当前的代码中,除了文件之外您没有其他任何内容,这就是 $_POST 为空的原因
    • @Anant 没关系,我已经解决了。现在我遇到了一些 ACL 错误... T_T
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 2018-04-13
    • 2016-07-09
    • 2016-03-01
    • 2012-07-31
    • 1970-01-01
    • 2019-12-29
    相关资源
    最近更新 更多