I am trying to copy an image and save it in the directory Uploads.
But something is wrong.

$image = $_POST['image_file'];
		
if(!empty($image))
{
	$target_path = "Uploads/";
	$target_path = copy($_FILES['image_file']['name'],$target_path); 
}

<FORM action="" method="post">
<input id="image_file" type="file" name="image_file" title="Upload">
</form>

I don't want to use another page in action.
And I want to save it with name 'Image'.

Could someone help me ?


Thanks a lot

Dani AI

Generated

The symptoms in this thread point to the usual upload pitfalls: the form not actually sending file data, server code looking in the wrong place, or trying to copy using an incorrect source/destination. 's snippets suggest a name/variable mismatch and a wrong copy target; was right to ask for the actual error — start by printing what PHP receives.

Quick checklist to diagnose and fix

  • Make sure the form uses POST with enctype multipart/form-data so the browser will send files.
  • Confirm the file input name matches the key you read in PHP and immediately inspect the raw data with var_dump($_FILES).
  • Check $_FILES['your_input_name']['error'] and compare to the upload error constants to see if PHP rejected the upload (see the error list).
  • Verify PHP ini settings (file_uploads, upload_max_filesize, post_max_size) and that the Uploads folder exists and is writable by the web server.
  • Avoid using the client filename directly; use the uploaded temporary file and a safe move function.

Recommended approach (safe and minimal)

  • Use move_uploaded_file on the uploaded tmp file, not copy, so PHP will validate the upload.
  • Detect/validate the image type (finfo or getimagesize) before writing and append the appropriate extension if you want a fixed name like Image.jpg.
  • Before moving, check is_writable on the destination directory and handle existing-file overwrites intentionally.

Small example outline (not a drop-in paste; validate and adapt)

if (!empty($_FILES['image_file']) && $_FILES['image_file']['error'] === UPLOAD_ERR_OK) {
  $tmp = $_FILES['image_file']['tmp_name'];
  $mime = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $tmp);
  $ext = ['image/jpeg'=>'jpg','image/png'=>'png','image/gif'=>'gif'][$mime] ?? null;
  if ($ext) move_uploaded_file($tmp, __DIR__.'/Uploads/Image.'.$ext);
}

References: PHP file-upload overview and error codes, and the safe move function — see PHP file upload documentation, upload error codes, and move_uploaded_file.

Recommended Answers

All 2 Replies

I found this code and try it but in my site I take the error undefined index : image.

<?php
//define a maxim size for the uploaded images in Kb
define ("MAX_SIZE","100");

//This function reads the extension of the file. It is used to determine if the file is an image by checking the extension.
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}

//This variable is used as a flag. The value is initialized with 0 (meaning no error found) and it will be changed to 1 if an errro occures. If the error occures the file will not be uploaded.
$errors=0;
//checks if the form has been submitted
if(isset($_POST['Submit']))
{
//reads the name of the file the user submitted for uploading
$image=$_FILES['image']['name'];
//if it is not empty
if ($image)
{
//get the original name of the file from the clients machine
$filename = stripslashes($_FILES['image']['name']);
//get the extension of the file in a lower case format
$extension = getExtension($filename);
$extension = strtolower($extension);
//if it is not a known extension, we will suppose it is an error and will not upload the file, otherwize we will do more tests
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{
//print error message
echo '<h1>Unknown extension!</h1>';
$errors=1;
}
else
{
//get the size of the image in bytes
//$_FILES['image']['tmp_name'] is the temporary filename of the file in which the uploaded file was stored on the server
$size=filesize($_FILES['image']['tmp_name']);

//compare the size with the maxim size we defined and print error if bigger
if ($size > MAX_SIZE*1024)
{
echo '<h1>You have exceeded the size limit!</h1>';
$errors=1;
}

//we will give an unique name, for example the time in unix time format
$image_name=time().'.'.$extension;
//the new name will be containing the full path where will be stored (images folder)
$newname="images/".$image_name;
//we verify if the image has been uploaded, and print error instead
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied)
{
echo '<h1>Copy unsuccessfull!</h1>';
$errors=1;
}}}}

//If no errors registred, print the success message
if(isset($_POST['Submit']) && !$errors)
{
echo "<h1>File Uploaded Successfully! Try again!</h1>";
}

?>

<!--next comes the form, you must set the enctype to "multipart/frm-data" and use an input type "file" -->
<form name="newad" method="post" enctype="multipart/form-data" action="">
<table>
<tr><td><input type="file" name="image"></td></tr>
<tr><td><input name="Submit" type="submit" value="Upload image"></td></tr>
</table>
</form>

What are you trying to say here cos i'm not getting you which of the code is returning error and what kind of error is it returning? can you kindly paste the error so we can know what wrong

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.