i upload.php:
<?
require(\"fileupload.class\");
#--------------------------------#
# Variables
#--------------------------------#
// The path to the directory where you want the
// uploaded files to be saved. This MUST end with a
// trailing slash unless you use $PATH = \"uploads/\"; to
// upload to the current directory. Whatever directory
// you choose, please chmod 777 that directory.
$PATH = \"uploads/\";
// The name of the file field in your form.
$FILENAME = \"userfile\";
// ACCEPT mode - if you only want to accept
// a certain type of file.
// possible file types that PHP recognizes includes:
//
// OPTIONS INCLUDE:
// text/plain
// image/gif
// image/jpeg
// image/png
$ACCEPT = \"image/gif\";
// If no extension is supplied, and the browser or PHP
// can not figure out what type of file it is, you can
// add a default extension - like \".jpg\" or \".txt\"
$EXTENSION = \"\";
// SAVE_MODE: if your are attempting to upload
// a file with the same name as another file in the
// $PATH directory
//
// OPTIONS:
// 1 = overwrite mode
// 2 = create new with incremental extention
// 3= do nothing if exists, highest protection
$SAVE_MODE = 1;
#--------------------------------#
# PHP
#--------------------------------#
function print_file($file, $type, $mode) {
if($file) {
if(ereg(\"image\", $type)) {
echo \"<img src=\\\"\" . $file . \"\\\" border=\\\"0\\\" alt=\\\"\\\">\";
}
else {
$userfile = fopen($file, \"r\");
while(!feof($userfile)) {
$line = fgets($userfile, 255);
switch($mode){
case 1:
echo $line;
break;
case 2:
echo nl2br(ereg_replace(\"\\t\", \" \", htmlentities($line)));
break;
}
}
}
}
}
$upload = new uploader;
$upload->max_filesize(30000);
if($upload->upload(\"$FILENAME\", \"$ACCEPT\", \"$EXTENSION\")) {
while(list($key, $var) = each($upload->file)){
echo $key . \" = \" . $var . \"<br>\";
}
if($upload->save_file(\"$PATH\", $SAVE_MODE)) {
print(\"<p>Saved as: \" . $upload->new_file . \"<p>\");
print_file($upload->new_file, $upload->file[\"type\"], 2);
}
}
if($upload->errors) {
while(list($key, $var) = each($upload->errors)){
echo \"<p>\" . $var . \"<br>\";
}
}
if ($NEW_NAME) {
print(\"<p>Name of image save: <b>$NEW_NAME</b></p>\");
}
#--------------------------------#
# HTML FORM
#--------------------------------#
?>
<form enctype=\"multipart/form-data\" action=\"<?print($PHP_SELF);?>\" method=\"POST\">
<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"100000\">Send dette logo
<input name=\"userfile\" type=\"file\">
<input type=\"submit\" value=\"Send logo\">
</form>
<hr>
<?
if ($ACCEPT) {
print(\"Denne uplaoder acceptere kun <b>\" . $ACCEPT . \"</b> files\\n\");
}
?>
Og i filen filupload.inc:
\'
<?
/*
Error codes:
0 - \"No file was uploaded\"
1 - \"Maximum file size exceeded\"
2 - \"Maximum image size exceeded\"
3 - \"Only specified file type may be uploaded\"
4 - \"File already exists\" (save only)
*/
class uploader {
var $file;
var $errors;
var $accepted;
var $new_file;
var $max_filesize;
var $max_image_width;
var $max_image_height;
function max_filesize($size){
$this->max_filesize = $size;
}
function max_image_size($width, $height){
$this->max_image_width = $width;
$this->max_image_height = $height;
}
function upload($filename, $accept_type, $extention) {
// get all the properties of the file
$index = array(\"file\", \"name\", \"size\", \"type\");
for($i = 0; $i < 4; $i++) {
$file_var = \'$\' . $filename . (($index[$i] != \"file\") ? \"_\" . $index[$i] : \"\");
eval(\'global \' . $file_var . \';\');
eval(\'$this->file[$index[$i]] = \' . $file_var . \';\');
}
if($this->file[\"file\"] && $this->file[\"file\"] != \"none\") {
//test max size
if($this->max_filesize && $this->file[\"size\"] > $this->max_filesize) {
$this->errors[1] = \"Maximum file size exceeded. File may be no larger than \" . $this->max_filesize/1000 . \"KB.\";
return False;
}
if(ereg(\"image\", $this->file[\"type\"])) {
$image = getimagesize($this->file[\"file\"]);
$this->file[\"width\"] = $image[0];
$this->file[\"height\"] = $image[1];
// test max image size
if(($this->max_image_width || $this->max_image_height) && (($this->file[\"width\"] > $this->max_image_width) || ($this->file[\"height\"] > $this->max_image_height))) {
$this->errors[2] = \"Maximum image size exceeded. Image may be no more than \" . $this->max_image_width . \" x \" . $this->max_image_height . \" pixels\";
return False;
}
switch($image[2]) {
case 1:
$this->file[\"extention\"] = \".gif\";
break;
case 2:
$this->file[\"extention\"] = \".jpg\";
break;
case 3:
$this->file[\"extention\"] = \".png\";
break;
default:
$this->file[\"extention\"] = $extention;
break;
}
}
else if(!ereg(\"(\\.)([a-z0-9]{3,5})$\", $this->file[\"name\"]) && !$extention) {
// add new mime types here
switch($this->file[\"type\"]) {
case \"text/plain\":
$this->file[\"extention\"] = \".txt\";
break;
default:
break;
}
}
else {
$this->file[\"extention\"] = $extention;
}
// check to see if the file is of type specified
if($accept_type) {
if(ereg($accept_type, $this->file[\"type\"])) { $this->accepted = True; }
else { $this->errors[3] = \"Only \" . ereg_replace(\"\\|\", \" or \", $accept_type) . \" files may be uploaded\"; }
}
else { $this->accepted = True; }
}
else { $this->errors[0] = \"No file was uploaded\"; }
return $this->accepted;
}
function save_file($path, $mode){
global $NEW_NAME;
if($this->accepted) {
// very strict naming of file.. only lowercase letters, numbers and underscores
$new_name = ereg_replace(\"[^a-z0-9._]\", \"\", ereg_replace(\" \", \"_\", ereg_replace(\"%20\", \"_\", strtolower($this->file[\"name\"]))));
// check for extention and remove
if(ereg(\"(\\.)([a-z0-9]{3,5})$\", $new_name)) {
$pos = strrpos($new_name, \".\");
if(!$this->file[\"extention\"]) { $this->file[\"extention\"] = substr($new_name, $pos, strlen($new_name)); }
$new_name = substr($new_name, 0, $pos);
}
$this->new_file = $path . $new_name . $this->file[\"extention\"];
$NEW_NAME = $new_name . $this->file[\"extention\"];
switch($mode) {
case 1: // overwrite mode
$aok = copy($this->file[\"file\"], $this->new_file);
break;
case 2: // create new with incremental extention
while(file_exists($path . $new_name . $copy . $this->file[\"extention\"])) {
$copy = \"_copy\" . $n;
$n++;
}
$this->new_file = $path . $new_name . $copy . $this->file[\"extention\"];
$aok = copy($this->file[\"file\"], $this->new_file);
break;
case 3: // do nothing if exists, highest protection
if(file_exists($this->new_file)){
$this->errors[4] = \"File "\" . $this->new_file . \"" already exists\";
}
else {
$aok = rename($this->file[\"file\"], $this->new_file);
}
break;
default:
break;
}
if(!$aok) { unset($this->new_file); }
return $aok;
}
}
}
?>
og i filen fileupload.class:
<?
/*
Error codes:
0 - \"ingen filer er uploadet\"
1 - \"Maximum file size exceeded\"
2 - \"Maximum image size exceeded\"
3 - \"Only specified file type may be uploaded\"
4 - \"File already exists\" (save only)
*/
class uploader {
var $file;
var $errors;
var $accepted;
var $new_file;
var $max_filesize;
var $max_image_width;
var $max_image_height;
function max_filesize($size){
$this->max_filesize = $size;
}
function max_image_size($width, $height){
$this->max_image_width = $width;
$this->max_image_height = $height;
}
function upload($filename, $accept_type, $extention) {
// get all the properties of the file
$index = array(\"file\", \"name\", \"size\", \"type\");
for($i = 0; $i < 4; $i++) {
$file_var = \'$\' . $filename . (($index[$i] != \"file\") ? \"_\" . $index[$i] : \"\");
eval(\'global \' . $file_var . \';\');
eval(\'$this->file[$index[$i]] = \' . $file_var . \';\');
}
if($this->file[\"file\"] && $this->file[\"file\"] != \"none\") {
//test max size
if($this->max_filesize && $this->file[\"size\"] > $this->max_filesize) {
$this->errors[1] = \"Maximum file size exceeded. File may be no larger than \" . $this->max_filesize/1000 . \"KB.\";
return False;
}
if(ereg(\"image\", $this->file[\"type\"])) {
$image = getimagesize($this->file[\"file\"]);
$this->file[\"width\"] = $image[0];
$this->file[\"height\"] = $image[1];
// test max image size
if(($this->max_image_width || $this->max_image_height) && (($this->file[\"width\"] > $this->max_image_width) || ($this->file[\"height\"] > $this->max_image_height))) {
$this->errors[2] = \"Maximum image size exceeded. Image may be no more than \" . $this->max_image_width . \" x \" . $this->max_image_height . \" pixels\";
return False;
}
switch($image[2]) {
case 1:
$this->file[\"extention\"] = \".gif\";
break;
case 2:
$this->file[\"extention\"] = \".jpg\";
break;
case 3:
$this->file[\"extention\"] = \".png\";
break;
default:
$this->file[\"extention\"] = $extention;
break;
}
}
else if(!ereg(\"(\\.)([a-z0-9]{3,5})$\", $this->file[\"name\"]) && !$extention) {
// add new mime types here
switch($this->file[\"type\"]) {
case \"text/plain\":
$this->file[\"extention\"] = \".txt\";
break;
default:
break;
}
}
else {
$this->file[\"extention\"] = $extention;
}
// check to see if the file is of type specified
if($accept_type) {
if(ereg($accept_type, $this->file[\"type\"])) { $this->accepted = True; }
else { $this->errors[3] = \"Only \" . ereg_replace(\"\\|\", \" or \", $accept_type) . \" files may be uploaded\"; }
}
else { $this->accepted = True; }
}
else { $this->errors[0] = \"ingen filer er uploadet\"; }
return $this->accepted;
}
function save_file($path, $mode){
global $NEW_NAME;
if($this->accepted) {
// very strict naming of file.. only lowercase letters, numbers and underscores
$new_name = ereg_replace(\"[^a-z0-9._]\", \"\", ereg_replace(\" \", \"_\", ereg_replace(\"%20\", \"_\", strtolower($this->file[\"name\"]))));
// check for extention and remove
if(ereg(\"(\\.)([a-z0-9]{3,5})$\", $new_name)) {
$pos = strrpos($new_name, \".\");
if(!$this->file[\"extention\"]) { $this->file[\"extention\"] = substr($new_name, $pos, strlen($new_name)); }
$new_name = substr($new_name, 0, $pos);
}
$this->new_file = $path . $new_name . $this->file[\"extention\"];
$NEW_NAME = $new_name . $this->file[\"extention\"];
switch($mode) {
case 1: // overwrite mode
$aok = copy($this->file[\"file\"], $this->new_file);
break;
case 2: // create new with incremental extention
while(file_exists($path . $new_name . $copy . $this->file[\"extention\"])) {
$copy = \"_copy\" . $n;
$n++;
}
$this->new_file = $path . $new_name . $copy . $this->file[\"extention\"];
$aok = copy($this->file[\"file\"], $this->new_file);
break;
case 3: // do nothing if exists, highest protection
if(file_exists($this->new_file)){
$this->errors[4] = \"File "\" . $this->new_file . \"" already exists\";
}
else {
$aok = rename($this->file[\"file\"], $this->new_file);
}
break;
default:
break;
}
if(!$aok) { unset($this->new_file); }
return $aok;
}
}
}
?>