Hi Ive wrote a upload script for a photo website im making and ive cam across a unusual problem. The script inserts all the values into the databse correctly and displays "file upload successfull" but the photos are not copying onto the server. any help will be appreciated, thank you!

<?php
require 'functions.php';
require 'common.php';


if(isset($_FILES['fupload'])) {
	
	$imagedir = 'img/photo/';
    $filename = addslashes($_FILES['fupload']['name']);
    $source = $_FILES['fupload']['tmp_name'];    
    $target = $imagedir . $filename;
    $description = addslashes($_POST['description']); 
	$category = addslashes($_POST['category']); 
	$title = addslashes($_POST['title']);  
    $path =  $filename;
    $thumb =  $filename;  
    
    
    // Validates the form input
    
    if(strlen($_POST['description']) < 4) 
    $error['description'] = '<p class="alert">Please enter a description for your photo. </p>';
	
	 if(strlen($_POST['title']) < 1)
    $error['title'] = '<p class="alert">Please enter a title for your photo. </p>';
    
    if($filename == '' || !preg_match('/[.](jpg)|(gif)|(png)|(jpeg)$/', $filename)) 
    $error['no_file'] = '<p class="alert">Select a image to upload</p>';
    
    if(!$error) {
       move_uploaded_file($source, $target);   
        
        $q = "INSERT INTO photo (title, description, source, thumb, category) VALUES('$title', '$description', '$path', '$thumb', '$category')";
        $result = $mysqli->query($q) or die(mysqli_error($mysqli));
        
        if($result) {
            echo "Success! Your file has been uploaded";
        }
        
    }  // end preg_match
}     

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	<link rel="stylesheet" href="css/default.css" />
	<title>My Photos</title>
</head>

<body>
    <h1>My Photos</h1>
    <ul><?php getPhotos(); ?></ul>

    <h1>Upload a Photo</h1>
    <form enctype="multipart/form-data" method="post" action="admin.php">
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
	    <p><input type="file" name="fupload" /></p>
	    
	    <p><label for="description">Enter a Description: </label> </p>
	   <p> <textarea rows="6" cols="50" id="description" name="description"></textarea></p>
        
	  Enter a title: <input type="text" name="title" size="25" id="title" /><br/>
        
        Please choose a category:
            <select name="category">
      <option value="">Select...</option>
      <option value="sports">Sports</option>
      <option value="london">London</option>
      <option value="macro">Macro</option>
      <option value="landscapes">Landscapes</option>
      <option value="local">Local</option>
    </select>
	    
	    <p><input type="submit" value="Upload Photo" name="submit" /></p>
    </form>

    <?php
    if ($error['no_file']) echo $error['no_file'];
    if ($error['description']) echo $error['description'];
	if ($error['title']) echo $error['title'];
    ?>

    <br />

</body>
</html>

Recommended Answers

All 7 Replies

Check the file path,also i had the same problem.
but latter on found out it the file path.
it should be something like this.

$imagedir = '/home/username/html_public/ img/photo/';

the target is fine ive confrmied this although the error seems to be lying with the $source variable, when i use this command

print_r($_FILES['fupload']);

i ge the following message

Array ( [name] => Capture.jpg [type] => [tmp_name] => [error] => 2 => 0 )

Aslo if i try and output the $source variable nothing is displayed

thanks

So file size is the issue, strange because in the form i set the max filesize to 300000, just for testing purposes and the file im uplaoding is only 35k, i also removed the max filesize feild from the form but still the same error. any ideas

Try changing upload_max_filesize in php.ini.

Usually you cannot change the ini file settings on the servers.
But If you want to change the upload_max_filesize, better use the ini_set function.

Using this function you can set the php.ini files values.
e.g.

ini_set("upload_max_filesize",1024768);

The above will set the upload filesize for your website to 1 MB.

And related to your issue, please also do check for the permissions on the server for the particular folder where you will be storing your images. The permission should be everyone write, so as any user on your site can upload the images to that folder.

ok il try that soon i set all the permissions up to 777. i appreciate the help.

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.