表格不通过提交传递文件/图片

时间:2013-05-15 12:47:24

标签: php html5 forms jquery-mobile

我正在使用php / html5并且我正在尝试上传文件,但$_FILES['picture']似乎从未包含任何内容。我经历过很多帖子并寻找常见的修复方法,但它们似乎都没有,首先是代码;

表;

<form enctype="multipart/form-data" action="decodeQR.php" method="post">
  <input type="hidden" name="MAX_FILE_SIZE" value="30000000" />
  <input type="file" name="picture" id="picture" value="picture" accept="picture/*" capture>
  <input type="submit" value="Upload">
</form>

decodeQR.php;

<?php
include 'header.php';


$upload_status = FALSE;
if(isset($_FILES['picture']))
{
    echo 'picture set <br>';
}
else
{
    echo 'picture not set <br>';
}

if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
  }

if (isset($_FILES['picture']) && file_exists($_FILES['picture']['tmp_name']))
{
    $image = $_FILES['picture']['tmp_name'];

    //~ Check if image is an image
    if (@getimagesize($image))
    {
        $upload_status = TRUE;
        //~ from here you can use yours image as $_FILES['picture']['name'], for example to copy it
        move_uploaded_file($image, realpath(dirname(__FILE__)).'/images/'.$_FILES['picture']['name']);

        //~ Also be noticed that the image curently is in OS tmp folder and if you dont copy it, it will be deleted after script execution.
    }
}
if ($upload_status)
{
    echo 'Image successfully uploaded. <br> <img src="images/'.$_FILES['picture']['name'].'">';
}
else
{
    echo 'nope.jpg';
}

?>

输出总是;

图片未设置

nope.jpg

这意味着未设置$_Files['picture'],并且文件数组中没有错误。

从上面的代码中可以看出,我已经尝试了以下修复程序;

  • 添加了表单enctype的标记; enctype="multipart/form-data
  • 添加了隐藏的MAX_FILE_SIZE属性
  • 未在代码中显示,我尝试在文件标记
  • 中添加size ='30000000'
  • 我在设置和获取文件
  • 时检查了值/名称是否相同
  • 我还检查了php.ini以确保允许file_upload

我可能会错过什么?

编辑;我在桌面和移动浏览器上试过这个。

2 个答案:

答案 0 :(得分:3)

我发现解决方案实际上是明显的(不能使用ajax上传文件)和jquerymobile框架之间的问题,jquerymobile框架默认在它的表单上使用ajax。

要解决此问题,我添加了data-ajax='false'

<form enctype="multipart/form-data" action="decodeQR.php" method="post" data-ajax='false'>

文件上传工作正常,所以我发布这个答案给任何使用jquerymobile的人都遇到了这个问题! :)

答案 1 :(得分:0)

您是否检查过浏览器发送的请求是否包含文件?

顺便说一句。我是新来的。你们如何将这些“评论”添加到问题中?