cs1h Posted September 11, 2007 Share Posted September 11, 2007 Hi, I'm trying to upload a picture and also reference its location to a mysql database. When the file is uploaded I want it to change its name to something random (with no spaces). I have the following script but when I run it it says Sorry, there was a problem uploading your file.. The script <?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']; $pic=($_FILES['uploaded']['tmp_name']); // Connects to your Database mysql_connect("localhost", "a", "b") or die(mysql_error()) ; mysql_select_db("c") 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)) { //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."; } ?> If anyone can help I will be very grateful. Thanks, Colin Link to comment https://forums.phpfreaks.com/topic/68872-problem-changing-file-name/ Share on other sites More sharing options...
gerkintrigg Posted September 11, 2007 Share Posted September 11, 2007 your problem lies with this code if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) try: $image_types = Array ('image/PNG', 'image/png', 'image/JPG', 'image/JPEG', 'image/pjpeg', 'image/jpg', 'image/jpeg'); if ((in_array($_FILES['imagefile']['type'], $image_types)) ){ //&& ($_FILES['imagefile']['size'] < 100000000)) { copy ($_FILES['imagefile']['tmp_name'], $root."shop/uploaded_images/".$_FILES['imagefile']['name']) or die ("Could not copy, please use the back button to try again."); // MySQL query goes here } Another suggestion would be to rename the image as the auto-increment id field from the database to prevent it being over-written. There are some who might say it's not a good idea because of more than one person accessing the database at a specific time and causing errors in the recording of the data... but I say that's unlikely. Anyway - good luck. Link to comment https://forums.phpfreaks.com/topic/68872-problem-changing-file-name/#findComment-346139 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.