Image uploading, renaming issue

Hello everyone!

I’m having a problem with some pieces of code i found, they’re meant for uploading images, which they do brilliantly except for those images are loaded into a static html-page, which means they should have the same name went they are uploaded through the form

So as an admin you have 10 “boxes” (i don’t know the proper name) for uploading images to a certain page, now if you want for example te replace the second picture you onyl have to insert a picture in the second box. But eversince i’m not able to get the pictures renamed when they upload, the whole system fails

So here is the code.

[php]<?php
//define a maxim size for the uploaded images in Kb
define (“MAX_SIZE”,“1024”);

//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’][‘value’];
//if it is not empty
if ($image)
{
//get the original name of the file from the clients machine
$filename = stripslashes($_FILES[‘image’][‘value’]);
//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,
//otherwise we will do more tests
if (($extension != “jpg”) && ($extension != “jpeg”))
{
//print error message
echo ‘

Unknown extension!

’;
$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 ‘

You have exceeded the size limit!

’;
$errors=1;
}
$parts = explode( ‘.’, $imagename );
$extension = strtolower( $parts[‘1’] );
$new_filename = strtolower( $_POST[‘new_filename’] ) . $extension;
//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= $new_filename;
//we verify if the image has been uploaded, and print error instead
$copied = copy($_FILES[‘image’][‘tmp_name’], $newname);
if (!$copied)
{
echo ‘

Copy unsuccessfull!

’;
$errors=1;
}}}}

//If no errors registred, print the success message
if(isset($_POST[‘Submit’]) && !$errors)
{
echo “

File Uploaded Successfully! Try again!

”;
}

?>[/php]

And the uploadform

<form enctype="multipart/form-data" action="upload.php" method="post"> Image 1: <input name="userfile[]" type="file" /><br /> Image 2: <input name="userfile[]" type="file" /><br /> Image 3: <input name="userfile[]" type="file" /><br /> Image 4: <input name="userfile[]" type="file" /><br /> Image 5: <input name="userfile[]" type="file" /><br /> Image 6: <input name="userfile[]" type="file" /><br /> Image 7: <input name="userfile[]" type="file" /><br /> Image 8: <input name="userfile[]" type="file" /><br /> Image 9: <input name="userfile[]" type="file" /><br /> Image 10: <input name="userfile[]" type="file" /><br /> <select name="destination"> <option value="1">home</option> <option value="2">Information</option> <option value="3">About Us</option> <option value="4">Sport & Fitness</option> <option value="5">Exchange Visit</option> <option value="6">Alcohol, Cigarettes & Drugs</option> <option value="7">Food & Drinks</option> </select> <input type="submit" value="Upload" />

I hope someone can help me!

Greetings

Yoram

I am not 100% sure I know what you want but if you are trying to prevent it from renaming the file try this:

[php]<?php
//define a maxim size for the uploaded images in Kb
define (“MAX_SIZE”,“1024”);

//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’][‘value’];

//if it is not empty

if ($image)

{

//get the original name of the file from the clients machine

$filename = stripslashes($_FILES[‘image’][‘value’]);

//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,

//otherwise we will do more tests
if (($extension != “jpg”) && ($extension != “jpeg”))

{
//print error message

echo ‘

Unknown extension!

’;

$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 ‘

You have exceeded the size limit!

’;

$errors=1;
}
$parts = explode( ‘.’, $imagename );
$extension = strtolower( $parts[‘1’] );
$new_filename = strtolower( $_POST[‘new_filename’] ) . $extension;
//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= $new_filename;
//we verify if the image has been uploaded, and print error instead
$copied = copy($_FILES[‘image’][‘tmp_name’], $_FILES[‘image’][‘tmp_name’]);
if (!$copied)
{

echo ‘

Copy unsuccessfull!

’;

$errors=1;
}}}}

//If no errors registred, print the success message
if(isset($_POST[‘Submit’]) && !$errors)
{
echo “

File Uploaded Successfully! Try again!

”;
}

?>[/php]

Thank for your reaction!

But what I try to get is actually exactly the opposite, that every file gets renamed no matter what the original name was. You have any idea how I would get that?

Greets

I was also wondering why this script is using the copy function instead of move_uploaded_file, but if it is uploading ok then good stuff. I never used the copy function like that :smiley:
Here give this a shot and let me know how it works out for ya
[php]

<?php //define a maxim size for the uploaded images in Kb define ("MAX_SIZE","1024"); //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']['value']; //if it is not empty if ($image) { //get the original name of the file from the clients machine $filename = stripslashes($_FILES['image']['value']); //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, //otherwise we will do more tests if (($extension != "jpg") && ($extension != "jpeg")) { //print error message echo '

Unknown extension!

'; $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 '

You have exceeded the size limit!

'; $errors=1; } $parts = explode( '.', $imagename ); $extension = strtolower( $parts['1'] ); $new_filename = strtolower( $_POST['new_filename'] ) . $extension; //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) $rand=rand(1,9999999999); $newname= $rand.'_'.$new_filename; //we verify if the image has been uploaded, and print error instead $copied = copy($_FILES['image']['tmp_name'], $newname); if (!$copied) { echo '

Copy unsuccessfull!

'; $errors=1; }}}} //If no errors registred, print the success message if(isset($_POST['Submit']) && !$errors) { echo "

File Uploaded Successfully! Try again!

"; } ?>

And the uploadform
[/php]

Hello,

thanks for your time trying to answer my question, the problem however seems to be that the script doesn’t do any renaming part :s
Maybe the beginning script is just rubbish, what i’m actually looking for is a script which will let users upload images through this form

<form enctype="multipart/form-data" action="upload.php" method="post"> Image 1: <input name="userfile[]" type="file" /><br /> Image 2: <input name="userfile[]" type="file" /><br /> Image 3: <input name="userfile[]" type="file" /><br /> Image 4: <input name="userfile[]" type="file" /><br /> Image 5: <input name="userfile[]" type="file" /><br /> Image 6: <input name="userfile[]" type="file" /><br /> Image 7: <input name="userfile[]" type="file" /><br /> Image 8: <input name="userfile[]" type="file" /><br /> Image 9: <input name="userfile[]" type="file" /><br /> Image 10: <input name="userfile[]" type="file" /><br /> <select name="destination"> <option value="1">home</option> <option value="2">Information</option> <option value="3">About Us</option> <option value="4">Sport & Fitness</option> <option value="5">Exchange Visit</option> <option value="6">Alcohol, Cigarettes & Drugs</option> <option value="7">Food & Drinks</option> </select> <input type="submit" value="Upload" />

But in such a way that, only .jpg files are allowed and that the name of the image (the uploaded one) is the same as the field where it’s uploaded to (image1.jpg, etc…). Maybe it’s possible to assign a unique ID or value to each field?
This is necessary because the images get uploaded into a static html which displays the images with an regular <img src="destenation" />. Therefore it’s important they get renamed, also if a user just want to replace one picture it should be allowed to leave the other field blank

You think you could help with something like this?

Greetings

Yoram

Sponsor our Newsletter | Privacy Policy | Terms of Service