【问题标题】:Form image submit not detected未检测到表单图像提交
【发布时间】:2016-10-11 17:56:44
【问题描述】:

有人可以找出我做错了什么吗?我从我网站上的另一个页面复制了它,但我无法让它在这个页面上工作。我还遗漏了一些文本输入,它们按预期工作。谢谢。

<?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);并且没有上传图片:

Array ( [nickname] => raySirSharp [motto] => Big gulps eh? [email] => razer88@hotmail.com [submit] => ) Array ( [pic] => Array ( [name] => [类型] => [tmp_name] => [错误] => 4 [大小] => 0 ) )

上传图片:

Array ( [nickname] => raySirSharp [motto] => Big gulps eh? [email] => razer88@hotmail.com [submit] => ) Array ( [pic] => Array ( [name] => 12472627_211490652554223_5803523050459466916_n.jpg [type] => image/jpeg [tmp_name] => /tmp/phpvNCBzj [error] => 0 [size] => 70254 ) )

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

我试过了:

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

【问题讨论】:

  • onsubmit 中的 checkSize() 函数是什么?
  • 嘿@Ryan,请在您的答案中添加java脚本功能代码
  • 你的 PHP 标签关闭了吗?文件保存为 PHP 文件? js源码?

标签: php html image forms


【解决方案1】:

已解决:

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

有效! :)

【讨论】:

    【解决方案2】:

    我认为是这个原因,我建议你使用类型 submit 提交表单。请将此&lt;button class="btn btn-primary" name="save" id="save"&gt;Save Changes&lt;/button&gt; 与此&lt;input type='submit' class="btn btn-primary" name="save" id="save"&gt; 一起删除。告诉我是不是这样?

    【讨论】:

      【解决方案3】:

      @Ryan 您正在使用 $_POST 而您的输入类型是 file
      尝试使用 $_FILES['pic'] 而不是 $_POST

      【讨论】:

        【解决方案4】:

        您好,在html 开始之前,您还没有关闭您的php tag。并尝试打印$_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);
            }
            ?>
        

        【讨论】:

          【解决方案5】:

          试试

          print_r($_POST);
          

          查看结果,如果不返回任何内容,问题可能是 onsubmit 触发的 checkSize()...

          【讨论】:

            【解决方案6】:

            在您的按钮中包含type='submit'

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

            要提交&lt;form&gt;,您的输入类型必须是submit

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

            欲了解更多信息,请Click HerePHP and the Submit Button of HTML Forms

            【讨论】:

            • 我想你可能正在做一些事情,因为我已经有类似这样的表单的页面提交到一个单独的页面,但我尝试包含 type = submit 并且没有任何改变。
            • 据我了解,&lt;form&gt; 不会在没有 type='submit' 的情况下被提交,除非提交是通过 AJAX @RyanClaxton 处理的
            【解决方案7】:

            要接受来自 HTML 表单的文件,您需要使用 $_FILES 而不是 $_POST。例如,您可以使用$_FILES["pic"]["name"] 来获取文件名。

            您可以从那里将图片移动到新位置,如下所示:
            move_uploaded_file($_FILES["pic"]["tmp_name"], "/var/tmp/pic.jpg")

            更多信息请访问http://www.w3schools.com/php/php_file_upload.asp

            【讨论】:

            • 这成功了,只是将 POST 更改为 (isset($_FILES["pic"]))。除了现在,即使输入为空,它也始终将某些内容识别为已提交..
            【解决方案8】:

            空而不是isset

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

            希望能解决你的问题

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

            【讨论】:

              猜你喜欢
              • 2014-03-18
              • 1970-01-01
              • 2017-10-08
              • 1970-01-01
              • 2016-09-12
              • 2011-08-03
              • 1970-01-01
              • 1970-01-01
              • 2021-09-30
              相关资源
              最近更新 更多