cs1h Posted September 12, 2007 Share Posted September 12, 2007 Hi, I'm trying to upload a file, assign it a random name and then reference it too a database. I am using the following script to achieve this but its not working, when I run it all I get is my own error message "Sorry, there was a problem uploading your file.". It is however putting a random number into the databse but it is not adding the extinsion type back on. The script is <?php //This function separates the extension from the rest of the file name and returns it function findexts ($filename) { $filename = strtolower($filename) ; $exts = split("[/\\.]", $filename) ; $n = count($exts)-1; $exts = $exts[$n]; return $exts; } //This applies the function to our file $ext = findexts ($_FILES['uploaded']['name']) ; //This line assigns a random number to a variable. You could also use a timestamp here if you prefer. $ran = rand () ; //This takes the random number (or timestamp) you generated and adds a . on the end, so it is ready of the file extension to be appended. $ran2 = $ran."."; //This assigns the subdirectory you want to save into... make sure it exists! $target = "images/"; //This combines the directory, the random file name, and the extension $target = $target . $ran2.$ext; //This gets all the other information from the form $name=$_POST['name']; $country=$_POST['menuFilesDMA']; $type=$_POST['Catagory']; $Email=$_POST['Email']; $Title=$_POST['title']; $Abstract=$_POST['message']; $Article=$_POST['messagetwo']; // Connects to your Database mysql_connect("localhost", "adder", "clifford") or die(mysql_error()) ; mysql_select_db("real") or die(mysql_error()) ; //Writes the information to the database mysql_query($sql = "insert into `items` (`name`, `country`, `type`, `Email`, `Title`, `Abstract`, `Article`, `photo`) values ('$name', '$country', '$type', '$Email', '$Title', '$Abstract', '$Article', '$ran2.$ext')"); //Writes the photo to the server if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) { //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['tmp_name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> If any one can see where I am going wrong i would be very gratefull. Cheers Colin Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/ Share on other sites More sharing options...
xyn Posted September 12, 2007 Share Posted September 12, 2007 $new_name = md5(mktime()*rand()).".".findexts(basename($_FILES['uploaded']['name'])); //Writes the photo to the server if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target.$newname)) { Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346848 Share on other sites More sharing options...
cs1h Posted September 12, 2007 Author Share Posted September 12, 2007 Thanks for the responce I made the changes (not sure if I did them correctly) and I got the following error Fatal error: Call to undefined function: findexts() in D:\Inetpub\vhost\myroho.com\httpdocs\adding.php on line 7 The script now looks like this <?php //This is the directory where images will be saved $target = "images/"; $target = $target . basename( $_FILES['photo']['name']); $new_name = md5(mktime()*rand()).".".findexts(basename($_FILES['uploaded']['name'])); //This gets all the other information from the form $name=$_POST['name']; $country=$_POST['menuFilesDMA']; $type=$_POST['Catagory']; $Email=$_POST['Email']; $Title=$_POST['title']; $Abstract=$_POST['message']; $Article=$_POST['messagetwo']; $pic=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "das", "casd") or die(mysql_error()) ; mysql_select_db("real") or die(mysql_error()) ; //Writes the information to the database mysql_query($sql = "insert into `items` (`name`, `country`, `type`, `Email`, `Title`, `Abstract`, `Article`, `photo`) values ('$name', '$country', '$type', '$Email', '$Title', '$Abstract', '$Article', '$pic')"); //Writes the photo to the server if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target.$newname)) { //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Any ideas how to solve this. Cheers Colin Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346873 Share on other sites More sharing options...
xyn Posted September 12, 2007 Share Posted September 12, 2007 that error is to do with your missing function. Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346876 Share on other sites More sharing options...
cs1h Posted September 12, 2007 Author Share Posted September 12, 2007 Cheers for the help, I put the function back in but its not uploading the photo and its putting the old name into the database, any ideas why? the script now looks like, <?php //This is the directory where images will be saved $target = "images/"; $target = $target . basename( $_FILES['photo']['name']); //This function separates the extension from the rest of the file name and returns it function findexts ($filename) { $filename = strtolower($filename) ; $exts = split("[/\\.]", $filename) ; $n = count($exts)-1; $exts = $exts[$n]; return $exts; } $new_name = md5(mktime()*rand()).".".findexts(basename($_FILES['uploaded']['name'])); //This gets all the other information from the form $name=$_POST['name']; $country=$_POST['menuFilesDMA']; $type=$_POST['Catagory']; $Email=$_POST['Email']; $Title=$_POST['title']; $Abstract=$_POST['message']; $Article=$_POST['messagetwo']; $pic=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "tr", "cretd") or die(mysql_error()) ; mysql_select_db("real") or die(mysql_error()) ; //Writes the information to the database mysql_query($sql = "insert into `items` (`name`, `country`, `type`, `Email`, `Title`, `Abstract`, `Article`, `photo`) values ('$name', '$country', '$type', '$Email', '$Title', '$Abstract', '$Article', '$pic')"); //Writes the photo to the server if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target.$newname)) { //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Any help is appriciated, Cheers Colin Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346885 Share on other sites More sharing options...
xyn Posted September 12, 2007 Share Posted September 12, 2007 <?php //This is the directory where images will be saved $target = "images/"; //This function separates the extension from the rest of the file name and returns it function findexts ($filename) { $filename = strtolower($filename) ; $exts = split("[/\\.]", $filename) ; $n = count($exts)-1; $exts = $exts[$n]; return $exts; } //This gets all the other information from the form $name=$_POST['name']; $country=$_POST['menuFilesDMA']; $type=$_POST['Catagory']; $Email=$_POST['Email']; $Title=$_POST['title']; $Abstract=$_POST['message']; $Article=$_POST['messagetwo']; $pic=($_FILES['photo']['name']); $new_name = md5(mktime()*rand()).".".findexts($_FILES['uploaded']['name']); //Writes the photo to the server if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target.$new_name)) { // Connects to your Database mysql_connect("localhost", "tr", "cretd") or die(mysql_error()) ; mysql_select_db("real") or die(mysql_error()) ; //Writes the information to the database mysql_query($sql = "insert into `items` (`name`, `country`, `type`, `Email`, `Title`, `Abstract`, `Article`, `photo`) values ('$name', '$country', '$type', '$Email', '$Title', '$Abstract', '$Article', '$new_name)"); //Tells you if its all ok echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346889 Share on other sites More sharing options...
cs1h Posted September 12, 2007 Author Share Posted September 12, 2007 Hi, I tested the new code but I now get my own error message "Sorry, there was a problem uploading your file." and nothing is going into the database or the image folder. Thanks Colin Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346893 Share on other sites More sharing options...
xyn Posted September 12, 2007 Share Posted September 12, 2007 <? function tend_this_file($name, $ext=false) { if($ext) { # # Extention is required; do not return the name # of the tending file. # return substr(basename($name), -4); } else { # # Extention wanted removed; so return the extention # return substr(basename($name), 0, -4); } } # $name=$_POST['name']; $country=$_POST['menuFilesDMA']; $type=$_POST['Catagory']; $Email=$_POST['Email']; $Title=$_POST['title']; $Abstract=$_POST['message']; $Article=$_POST['messagetwo']; $pic=($_FILES['photo']['name']); $new_name = md5(mktime()*rand()).".".tend_this_file($_FILES['photo']['name']); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target.$new_name)) { // Connects to your Database mysql_connect("localhost", "tr", "cretd") or die(mysql_error()) ; mysql_select_db("real") or die(mysql_error()) ; //Writes the information to the database mysql_query($sql = "insert into `items` (`name`, `country`, `type`, `Email`, `Title`, `Abstract`, `Article`, `photo`) values ('$name', '$country', '$type', '$Email', '$Title', '$Abstract', '$Article', '$new_name)"); //Tells you if its all ok echo "The file ". basename($_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346896 Share on other sites More sharing options...
cs1h Posted September 12, 2007 Author Share Posted September 12, 2007 Hi, I tried the new version but I am now getting the following errors, Warning: move_uploaded_file(b9d0c5a423d27d8cef8a685418f38419.Cows 001) [function.move-uploaded-file]: failed to open stream: Permission denied in D:\Inetpub\vhost\myroho.com\httpdocs\adding.php on line 31 Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\php40BC.tmp' to 'b9d0c5a423d27d8cef8a685418f38419.Cows 001' in D:\Inetpub\vhost\myroho.com\httpdocs\adding.php on line 31 Sorry, there was a problem uploading your file. Any ideas why, also is it possible so that there are no spaces in the new filename. Cheers Colin Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346899 Share on other sites More sharing options...
xyn Posted September 12, 2007 Share Posted September 12, 2007 chmod your images folder to 0777 Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346907 Share on other sites More sharing options...
cs1h Posted September 12, 2007 Author Share Posted September 12, 2007 I tried that but it didn't work. Any other theories on it, they are appriciated. Quote Link to comment https://forums.phpfreaks.com/topic/69001-problem-changing-file-name-with-php/#findComment-346992 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.