index.php:
[php]<?php
// filename: upload.form.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 location of the upload handler
$uploadHandler = ‘http://’ . $_SERVER[‘HTTP_HOST’] . $directory_self . ‘processor.php’;
// set a max file size for the html upload form
$max_file_size = 2097152; // size in bytes
// now echo the html page
?>
<link rel="stylesheet" type="text/css" href="style.css">
<title>Upload form</title>
</head>
<body>
<form id="Upload" action="<?php echo $uploadHandler ?>" enctype="multipart/form-data" method="post">
<h1>
File uploader
</h1>
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>">
</p>
<div id="center">
<p>
<label for="file">File:</label>
<input id="file" type="file" name="file">
</p>
<p>
<input id="submit" type="submit" name="submit" value="Upload">
</p>
</div>
</form>
</body>
[/php]
processor.php:
[php]<?php
// 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 files
$uploadsDirectory = $_SERVER[‘DOCUMENT_ROOT’] . $directory_self . ‘uploaded/’;
// make a note of the location of the upload form in case we need it
$uploadForm = ‘http://’ . $_SERVER[‘HTTP_HOST’] . $directory_self . ‘index.php’;
// make a note of the location of the success page
$uploadSuccess = ‘http://’ . $_SERVER[‘HTTP_HOST’] . $directory_self . ‘success.php’;
// name of the fieldname used for the file in 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 form
isset($_POST[‘submit’])
or error(‘the upload form is neaded’, $uploadForm);
// check for standard uploading errors
($_FILES[$fieldname][‘error’] == 0)
or error($errors[$_FILES[$fieldname][‘error’]], $uploadForm);
// check that the file we are working on really was 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 upload is an image
// make a unique filename for the uploaded file and check it is
// not taken… if it is keep trying until we find a vacant one
$now = time();
while(file_exists($uploadFilename = $uploadsDirectory.$now.’-’.$_FILES[$fieldname][‘name’]))
{
$now++;
}
// now let’s move the file to its final and allocate it with the new filename
@move_uploaded_file($_FILES[$fieldname][‘tmp_name’], $uploadFilename)
or error(‘receiving directory insuffiecient permission’, $uploadForm);
// If you got this far, everything has worked and the file has been successfully saved.
// We are now going to redirect the client to the success page.
header('Location: ’ . $uploadSuccess);
// make an error handler which will be used if the upload fails
function error($error, $location, $seconds = 5)
{
header(“Refresh: $seconds; URL=”$location"");
echo ‘’."\n\n".
‘’."\n".
’ '."\n".
’ '."\n\n".
’ ‘."\n\n".
’ Upload failed’."\n\n".
’ '."\n\n".
’ '."\n\n".
’
‘."\n\n".
’
Upload failed
’."\n\n".
’
An error has occured: ‘."\n\n".
’ ’ . $error . ‘.’."\n\n".
’ You will be redirected back to the uploader form in 5 seconds.
’."\n\n".
’
'."\n\n".
‘’;
exit;
} // end error handler
?>[/php]
success.php:
[php]<?php
// filename: upload.success.php
?>
<link rel="stylesheet" type="text/css" href="style.css">
<title>PRO SALAMANDERRR! - File uploader</title>
</head>
<body>
<div id="Upload">
<h1>File uploader</h1>
<p>Your file has been succesfully uploaded.</p>
</div>
</body>
[/php]
style.css:
[php]#Upload {
width: 25em;
margin: 1em auto;
padding:0 2em 2em 2em ;
border:1px solid #bbb;
color: #333;
background:#ffd;
font: 0.9em verdana, sans-serif;
}
#Upload h1 {
font: 1.4em bold verdana, sans-serif;
margin: 0;
padding:1em 0;
text-align:center;
}
#Upload p {
clear: both;
}
.red {
color:#ff0000;
}
#center {
text-align:center;
}[/php]