[Xitami] Upload scripts on Xitami

rob tromp xitami@lists.xitami.org
Wed, 31 Oct 2001 20:34:37 +0100


This is a multi-part message in MIME format.

------=_NextPart_000_0008_01C1624B.75529460
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Yes....

Her it is, it is rather basic, but it will work. You can modify and give it
a cosmetic facelift.
After sending the file, the file is diplayed. If you don't want this to
happen, modify the .class

Regards,
Rob


<html>
	<head>
		<title>Upload</title>
	</head>
<body>

<?
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 = ""; to
// upload to the current directory. Whatever directory
// you choose, please chmod 777 that directory.

	$PATH = "./images/";

// 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 = "";

// 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",
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", htmlentities($line)));
						break;
				}
			}
		}
	}
}

$upload = new uploader;
$upload->max_filesize(500000);

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 sent file: <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 this file:
		<input name="userfile" type="file">
		<input type="submit" value="SEND">
	</form>
	<hr>
	[ <a href="../index.html">Home</a> ]
<?
	if ($ACCEPT) {
		print(" [ This form only accepts <b>" . $ACCEPT . "</b> files ] \n");
	}
?>

</body>
</html>

> -----Oorspronkelijk bericht-----
> Van: xitami-admin@lists.xitami.org
> [mailto:xitami-admin@lists.xitami.org]Namens Priyo Chatterjee
> Verzonden: woensdag 31 oktober 2001 18:32
> Aan: xitami@lists.xitami.org
> Onderwerp: [Xitami] Upload scripts on Xitami
>
>
> Hi,
>
> Does anybody have a file upload script which will work
> on Xitami.
>
> Thanks much.
>
> Priyo
>
> __________________________________________________
> Do You Yahoo!?
> Make a great connection at Yahoo! Personals.
> http://personals.yahoo.com
>
> --
> Xitami Users Mailing List -- For Xitami support
> To unsubscribe: http://lists.xitami.org/mailman/listinfo/xitami
>

------=_NextPart_000_0008_01C1624B.75529460
Content-Type: application/octet-stream;
	name="fileupload.class"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="fileupload.class"

<?
/*
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 =3D $size;
	}

	function max_image_size($width, $height){
		$this->max_image_width =3D $width;
		$this->max_image_height =3D $height;
	}

	function upload($filename, $accept_type, $extention) {
		// get all the properties of the file
		$index =3D array("file", "name", "size", "type");
		for($i =3D 0; $i < 4; $i++) {
			$file_var =3D '$' . $filename . (($index[$i] !=3D "file") ? "_" . =
$index[$i] : "");
			eval('global ' . $file_var . ';');
			eval('$this->file[$index[$i]] =3D ' . $file_var . ';');
		}
=09
		if($this->file["file"] && $this->file["file"] !=3D "none") {
			//test max size
			if($this->max_filesize && $this->file["size"] > $this->max_filesize) =
{
				$this->errors[1] =3D "Maximum file size exceeded. File may be no =
larger than " . $this->max_filesize/1000 . "KB.";
				return False;
			}
	 		if(ereg("image", $this->file["type"])) {
	 			$image =3D getimagesize($this->file["file"]);
	 			$this->file["width"] =3D $image[0];
	 			$this->file["height"] =3D $image[1];
		=09
				// 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] =3D "Maximum image size exceeded. Image may be no =
more than " . $this->max_image_width . " x " . $this->max_image_height . =
" pixels";
					return False;
				}=09
	 			switch($image[2]) {
	 				case 1:
	 					$this->file["extention"] =3D ".gif";
	 					break;
	 				case 2:
	 					$this->file["extention"] =3D ".jpg";
	 					break;
	 				case 3:
	 					$this->file["extention"] =3D ".png";
	 					break;
	 				default:
						$this->file["extention"] =3D $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"] =3D ".txt";
						break;
					default:
						break;
				}		=09
	 		}
			else {
				$this->file["extention"] =3D $extention;
			}
	=09
			// check to see if the file is of type specified
			if($accept_type) {
				if(ereg($accept_type, $this->file["type"])) { $this->accepted =3D =
True; }
				else { $this->errors[3] =3D "Only " . ereg_replace("\|", " or ", =
$accept_type) . " files may be uploaded"; }
			}
			else { $this->accepted =3D True; }
		}
		else { $this->errors[0] =3D "No file was uploaded"; }
		return $this->accepted;
	}

	function save_file($path, $mode){
		global $NEW_NAME;
	=09
		if($this->accepted) {
			// very strict naming of file.. only lowercase letters, numbers and =
underscores
			$new_name =3D 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 =3D strrpos($new_name, ".");
				if(!$this->file["extention"]) { $this->file["extention"] =3D =
substr($new_name, $pos, strlen($new_name)); }
				$new_name =3D substr($new_name, 0, $pos);
			=09
			}
			$this->new_file =3D $path . $new_name . $this->file["extention"];
			$NEW_NAME =3D $new_name . $this->file["extention"];
		=09
			switch($mode) {
				case 1: // overwrite mode
					$aok =3D 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 =3D "_copy" . $n;
						$n++;
					}
					$this->new_file =3D $path . $new_name . $copy . =
$this->file["extention"];
					$aok =3D 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] =3D "File &quot" . $this->new_file . "&quot =
already exists";
					}
					else {
						$aok =3D rename($this->file["file"], $this->new_file);
					}
					break;
				default:
					break;
			}
			if(!$aok) { unset($this->new_file); }
			return $aok;
		}
	}
}
?>

------=_NextPart_000_0008_01C1624B.75529460--