I am trying to figure out how the file upload system works in PHP. My code is:
if(isset($_FILES['profile_pic'])){
$allowed_ext= array('jpg','jpeg','png','gif');
$file_name = $_FILES['profile_pic']['name'];
$file_ext = strtolower(end (explode('.',$file_name)));
$file_size = $_FILES['profile_pic']['size'];
$file_tmp = $_FILES['profile_pic']['tmp_name'];
if(in_array($file_ext, $allowed_ext) === false || $file_size > 2000000){
$display_block = 'display:block !important';
$pic_errors ='<p>* File format JPG, JPEG, GIF or PNG</p> <p>* Smaller 1Mb</p>';
} else {
move_uploaded_file($file_tmp, '/members/');
echo 'uploaded..';
}
}//if(isset($_FILES['profile_pic']))
with permissions everything seems to be fine.
The error I get is:
Warning: move_uploaded_file(/members/) [function.move-uploaded-file]: failed to open stream: Is a directory in /home/a6671212/public_html/settings.php on line 116
How do I fix this error?
THANKS to everyone..
as i understood i had 2 issues..
-
as @Prisoner wrote..
move_uploaded_file($file_tmp, ‘/members/’); – i didn’t wrote the file name after /members/ -
as @Ketan Patel wrote,
the function should be changed to another format, if i may say so..
move_uploaded_file($file_tmp, “/members/$file_name”); – double quotes…
It Worked!!!!!!!! Thank YOUUU!!!
You have to define a filename, so something like:
or, in your case:
Also, is /members/ a directory (in the root of your filesystem)? If not, use a relative or absolute path to the members directory. Edit: Judging by the error, I’m guessing /members/ is a directory, so this should work fine:
Don’t forget to also check for the file existence first otherwise
move_uploaded_filewill overwrite the old file.