Jump to content

problem changing file name


cs1h

Recommended Posts

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

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.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.