Jump to content

image upload


garydt

Recommended Posts

I've finally sorted out the directory permissions and have successfully uploaded images into a directory. Now i want to insert the image name along with the logged in username into the database but it isn't inserting anything.  the code:-

 

<?php require_once('Connections/elvisdb.php'); ?>

<?php

 

// filename: upload.processor.php

 

// first let's set some variables

 

// make a note of the current working directory, relative to root.

$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);

 

// make a note of the directory that will recieve the uploaded file

$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploads/';

 

// make a note of the location of the upload form in case we need it

$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploadform.php';

 

// make a note of the location of the success page

$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploadsucs.php';

 

// fieldname used within the file <input> of the HTML form

$fieldname = 'file';

 

// Now let's deal with the upload

 

// possible PHP upload errors

$errors = array(1 => 'php.ini max file size exceeded',

                2 => 'html form max file size exceeded',

                3 => 'file upload was only partial',

                4 => 'no file was attached');

 

// check the upload form was actually submitted else print the form

isset($_POST['submit'])

    or error('the upload form is neaded', $uploadForm);

 

// check for PHP's built-in uploading errors

($_FILES[$fieldname]['error'] == 0)

    or error($errors[$_FILES[$fieldname]['error']], $uploadForm);

   

// check that the file we are working on really was the subject of an HTTP upload

@is_uploaded_file($_FILES[$fieldname]['tmp_name'])

    or error('not an HTTP upload', $uploadForm);

   

// validation... since this is an image upload script we should run a check 

// to make sure the uploaded file is in fact an image. Here is a simple check:

// getimagesize() returns false if the file tested is not an image.

@getimagesize($_FILES[$fieldname]['tmp_name'])

    or error('only image uploads are allowed', $uploadForm);

   

// make a unique filename for the uploaded file and check it is not already

// taken... if it is already taken keep trying until we find a vacant one

// sample filename: 1140732936-filename.jpg

$now = time();

while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name']))

{

    $now++;

}

 

// now let's move the file to its final location and allocate the new filename to it

@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename)

    or error('receiving directory insuffiecient permission', $uploadForm);

 

session_start();

 

$user = $_SESSION['MM_Username'];

 

mysql_select_db($database_elvisdb, $elvisdb);

$insertSQL sprintf("INSERT INTO images (usnm, ImageName, imageFile) VALUES ('$user','%s', '%s')", $photo, $_FILES['$uploadFilename']['type']);

   

// If you got this far, everything has worked and the file has been successfully saved.

// We are now going to redirect the client to a success page.

header('Location: ' . $uploadSuccess);

 

// The following function is an error handler which is used

// to output an HTML error page if the file upload fails

function error($error, $location, $seconds = 5)

{

    header("Refresh: $seconds; URL=\"$location\"");

    echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n".

    '"http://www.w3.org/TR/html4/strict.dtd">'."\n\n".

    '<html lang="en">'."\n".

    '    <head>'."\n".

    '        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n".

    '        <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n".

    '    <title>Upload error</title>'."\n\n".

    '    </head>'."\n\n".

    '    <body>'."\n\n".

    '    <div id="Upload">'."\n\n".

    '        <h1>Upload failure</h1>'."\n\n".

    '        <p>An error has occured: '."\n\n".

    '        <span class="red">' . $error . '...</span>'."\n\n".

    '        The upload form is reloading</p>'."\n\n".

    '    </div>'."\n\n".

    '</html>';

    exit;

} // end error handler

 

?>

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

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Untitled Document</title>

</head>

 

<body>

</body>

</html>

 

Link to comment
https://forums.phpfreaks.com/topic/42882-image-upload/
Share on other sites

I prefer to store path in database ...

Upload file in your upload_dir/username/whatever.jpg ...

And store path to image in database..

 

I've read about storing image in database (it is said it is faster) ... but I think database isn't make to store images (I guess).. In fact we've tested it and it wasn't faster storing path in database...

 

To store path do smth like this:

 

$uploaddir = "directory";

$username = "GET_USERNAME_FROM_UPLOADE";

$name = "CREATE_RANDOM_NAME.jpg";

 

$path_to_img = $uploaddir."/".$username."/".$name;

 

And store $path_to_img in your database...

 

Hope this will be your solution ...

Link to comment
https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-208351
Share on other sites

Thanks.

I have the pathtoimg variable now but its not inserting anything into the database and i can't see why.  The code-

 

<?php require_once('Connections/elvisdb.php'); ?>

<?php

 

 

// filename: upload.processor.php

 

// first let's set some variables

 

// make a note of the current working directory, relative to root.

$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']);

 

// make a note of the directory that will recieve the uploaded file

$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploads/';

 

// make a note of the location of the upload form in case we need it

$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploadform.php';

 

// make a note of the location of the success page

$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'uploadsucs.php';

 

// fieldname used within the file <input> of the HTML form

$fieldname = 'file';

// Now let's deal with the upload

 

// validation... since this is an image upload script we should run a check 

// to make sure the uploaded file is in fact an image. Here is a simple check:

// getimagesize() returns false if the file tested is not an image.

@getimagesize($_FILES[$fieldname]['tmp_name']);

   

// make a unique filename for the uploaded file and check it is not already

// taken... if it is already taken keep trying until we find a vacant one

// sample filename: 1140732936-filename.jpg

$now = time();

while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name']))

{

    $now++;

}

 

// now let's move the file to its final location and allocate the new filename to it

@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename);

 

$pathtoimg = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'uploads/.$uploadfilename';

session_start();

 

$user = $_SESSION['MM_Username'];

 

mysql_select_db($database_elvisdb, $elvisdb);

$query = sprintf("INSERT INTO images (ImageName, usnm) VALUES ('$pathtoimg', '$user')");

echo $fieldname;

echo $pathtoimg

?>

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

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Untitled Document</title>

</head>

 

<body>

<form name="form1" id="Upload" action="<?php echo $editFormAction; ?>" enctype="multipart/form-data" method="POST">

   

        <h1>

            Upload form

        </h1>

       

        <p>

            <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>">

        </p>

       

        <p>

            <label for="file">File to upload:</label>

            <input id="file" type="file" name="file">

        </p>

        <p>

            <label for="submit">Press to...</label>

            <input id="submit" type="submit" name="submit" value="Upload me!">

        </p>

   

        <input type="hidden" name="MM_insert" value="form1">

</form>

</body>

</html>

 

Link to comment
https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-208708
Share on other sites

Your not running your queries from what I can see, you should be running them, not storing the SQL code in a variable and not running it.

Try:

mysql_select_db($database_elvisdb, $elvisdb);
$query = "INSERT INTO images (ImageName, usnm) VALUES ('$pathtoimg', '$user')";
mysql_query($query);
echo $fieldname;
echo $pathtoimg
?>

Link to comment
https://forums.phpfreaks.com/topic/42882-image-upload/#findComment-208766
Share on other sites

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.