6
votes

I've attempted to write code to have a file uploaded to a "media" folder in PHP. For some reason it continues to not work.

Here's the execution code:

move_uploaded_file($_FILES["file"]["tmp_name"],"../media/" . $_FILES["file"]["name"]) or die ("Failure to upload content");

Here's my form code:

    <input type="file" name="file" id="file" /> 

Any ideas why it may not be working?


EDIT:

When I use the command "print_r($_FILES);", it displays:

Array ( [file] => Array ( [name] => Screen Shot 2012-05-29 at 12.36.11 PM.png [type] => image/png [tmp_name] => /Applications/MAMP/tmp/php/phpHNj3nW [error] => 0 [size] => 71640 ) )

Image is NOT uploaded into the folder.

9
Make sure enctype attribute of form tag is "multipart/form-data". - mert
Thanks, didn't have that on. Still doesn't work, though. - user100051

9 Answers

28
votes

Make sure that in your form.. you put the enctype.
eg: <form method="post" enctype="multipart/form-data" action="index.php"></form>;

To check if files are successfully updated upon submitting the form. use print_r to see results.
print_r($_FILES);

5
votes

make sure media folder has 777 permission and the path ../media/ is correct

3
votes

Put the encription in form

<form method="post" action="index.php" enctype="multipart/form-data"></form>

Check in php.ini file max_execution_time heavy images are not uploaded due to execution time..

2
votes

Check in php.ini file max_execution_time heavy images are not uploaded due to execution time..

eg: ;

1
votes

There is a form with encrypt type or an ajax call? Do you check if the file is sended to the upload script (with a print_r($_FILES["file"]). If correct, do you have check if the relative path is correct? You must start from the current script (if file is included you must start from the including script). Sorry if answer seems simply, but the posted code is a little too short to evaluate.

0
votes

In your form tag you want something like this <form enctype="multipart/form-data" action="uploader.php" method="POST"> Make sure enctype is set to multipart/form-data for files. Replace uploader.php with the name of the php file doing the processing. Also make sure your permissions are set so the file can be created in the directory.

Here's a list of possible problems: http://php.net/manual/en/features.file-upload.php

0
votes

Have you checked that the "web server user" has write permissions to "../media" ?

0
votes

I was having the same problem. I am using ubuntu 18.04 and it was solved when i used this permission command on terminal. sudo chmod -R 777 /var/www/html/target_dir. ->I have apache2 web server and target_dir as Download so replace target_dir as per your destination directory.

0
votes

Make sure that in your form.. you put the enctype.

move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success