Reputation: 2073
I'm working with php/html5 and i'm attempting to upload a file, but $_FILES['picture']
never seems to contain anything. I've been through a lot of posts and looked for common fixes, but none of them seem to work, firstly, the code;
Form;
<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';
}
?>
The output is always;
picture not set
nope.jpg
This means that $_Files['picture']
is not set, and there are no errors in the files array.
As you can see from the code above i have already tried the following fixes;
enctype="multipart/form-data
"MAX_FILE_SIZE
attributeWhat could I possibly be missing?
Edit; I've tried this on my desktop and mobile browsers.
Upvotes: 0
Views: 2644
Reputation: 2073
I found the solution to actually be a problem between the obvious (Not being able to file upload using ajax), and jquerymobile framework, which uses ajax on it's forms by default.
To fix the problem I added data-ajax='false'
<form enctype="multipart/form-data" action="decodeQR.php" method="post" data-ajax='false'>
The file upload works fine, so i'm posting this answer for anyone who's using jquerymobile and comes across this problem! : )
Upvotes: 3
Reputation: 102
Have you checked if the request sent by the browser contains the file?
BTW. I'm new here. How do you guys add these "comments" to questions?
Upvotes: 0