我正在使用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="multipart/form-data
“MAX_FILE_SIZE
属性我可能会错过什么?
编辑;我在桌面和移动浏览器上试过这个。
答案 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)
您是否检查过浏览器发送的请求是否包含文件?
顺便说一句。我是新来的。你们如何将这些“评论”添加到问题中?