未检测到表单图像提交

时间:2016-06-10 17:10:12

标签: php html image forms

有人可以发现我做错了什么吗?我在我网站上的其他页面上复制了它,但是我无法在这个页面上工作。还有我遗漏的文本输入正在按预期工作。感谢。

<?php
if (isset($_POST["save"])) {

    if (isset($_POST['pic'])){
        //isset never detected when image is uploaded in html
    }

}


<html>
<form class="form-horizontal" onsubmit="return checkSize(2097152)" enctype="multipart/form-data" data-toggle="validator" method="POST" action="profile.php">
<input id="pic" name="pic" type="file" accept="image/*" class="text-center center-block well well-sm">

        <div class="form-group">
            <label class="col-md-3 control-label"></label>
            <div class="col-md-8">
                <button class="btn btn-primary" name="save" id="save">Save Changes</button>
                <a href="profile.php" class="btn btn-default" role="button">Cancel</a>
            </div>
        </div>

</form>
<script type="text/javascript">

//check image size func
function checkSize(max_img_size)
{
    var input = document.getElementById("pic");
    // check for browser support (may need to be modified)
    if(input.files && input.files.length == 1)
    {           
        if (input.files[0].size > max_img_size) 
        {
            alert("Profile Picture must be less than " + (max_img_size/1024/1024) + "MB");
            return false;
        }
    }

    return true;
}

另外:我刚做了一个print_r($ _ POST);的print_r($ _ FILES);并没有上传图片:

数组([昵称] =&gt; raySirSharp [motto] =&gt;大吞嘛?[email] =&gt; razer88@hotmail.com [提交] =&gt;)数组([pic] =&gt;数组( [name] =&gt; [type] =&gt; [tmp_name] =&gt; [error] =&gt; 4 [size] =&gt; 0))

上传图片:

数组([昵称] =&gt; raySirSharp [motto] =&gt;大吞嘛?[email] =&gt; razer88@hotmail.com [提交] =&gt;)数组([pic] =&gt;数组( [name] =&gt; 12472627_211490652554223_5803523050459466916_n.jpg [type] =&gt; image / jpeg [tmp_name] =&gt; / tmp / phpvNCBzj [error] =&gt; 0 [size] =&gt;&gt; 70254))

我可以用什么来检测图片是否已上传?

我试过了:

if (isset($_FILES['pic'])){ //always true :( }

8 个答案:

答案 0 :(得分:1)

空而不是isset

if (!empty($_POST['pic'])){

}

我希望它能解决你的问题

我没有找到任何提交表单的代码,所以如果没有提交,你就无法在下一页获得POST变量。

答案 1 :(得分:1)

要接受HTML表单中的文件,您需要使用$ _FILES而不是$ _POST。例如,您可以使用*root来获取文件名。

从那里你可以将图片移动到这样的新位置:
$_FILES["pic"]["name"]

http://www.w3schools.com/php/php_file_upload.asp

提供了更多信息

答案 2 :(得分:1)

@Ryan当您的输入类型为文件时,您正在使用$ _POST左侧尝试使用$_FILES['pic']代替$ _POST

答案 3 :(得分:1)

解决了:

if (!empty($_FILES["pic"]["name"])){ }

作品! :)

答案 4 :(得分:0)

在按钮中加入type='submit'

<button type='submit' class="btn btn-primary" name="save" id="save">
  Save Changes
</button>
  

要提交<form>,您的输入类型必须为submit

HTML Submit按钮用于将表单数据提交到ACTION属性中提到的脚本。只要SUBMIT设置了ACTION,您的数据就会被发送到某个地方。但是提交按钮的NAME属性非常方便。您可以使用此名称来测试表单是否真的已提交,或者用户是否只是单击了刷新按钮。当PHP脚本与HTML表单位于同一页面时,这很重要。

有关详情,请Click HerePHP and the Submit Button of HTML Forms

答案 5 :(得分:0)

尝试

print_r($_POST);

看结果,如果没有返回任何东西可能是问题是onSubmit的checkSize()触发...

答案 6 :(得分:0)

您好php开始之前尚未关闭tag html。并尝试打印$_FILES您将获得所有image信息

<?php
if (isset($_POST["save"])) {
// echo "<pre>";print_r($_FILES['pic']);
//then to upload use this
$file_name = $_FILES['pic']['name'];
$file_tmp =$_FILES['pic']['tmp_name'];    
move_uploaded_file($file_tmp,"images/".$file_name);
    }
    ?>

答案 7 :(得分:0)

我认为这是原因,我建议您使用提交表单提交类型。请使用此<button class="btn btn-primary" name="save" id="save">Save Changes</button>删除此<input type='submit' class="btn btn-primary" name="save" id="save">。告诉我它是否