It allows to copy file in a select directory. It also controls the file format, and eventually change the extension of the file if it is wrong.
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 = $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; } } } ?> upload.php <html> <head> <title>Upload</title> </head> <body> <? require("fileupload.class"); $PATH = "uploads/"; $FILENAME = "userfile"; $ACCEPT = "image/gif"; $EXTENSION = ""; $SAVE_MODE = 1; 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>"); } ?> <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 File"> </form> <hr> <? if ($ACCEPT) { print("This form only accepts <b>" . $ACCEPT . "</b> files\n"); } ?> </body> </html>
Download code...
Script C# per tutte le esigenze: database, sessioni, file, contatori, stringhe, date, e-mail, e tanto altro.
Manuale completo di C# per principianti e non
Script VB.Net Visual Basic .net: database, sessioni, file, contatori, stringhe, date, e-mail, e tanto altro ancora.
Manuale completo di VB.Net per principianti e non.
Tecniche di posizionamento indicizzazione e ottimizzazione dei siti web per nei motori di ricerca
Manuale completo sui CSS per principianti e non
HTML 5 è un linguaggio di markup utilizzato per la strutturazione e il contenuto delle pagine Web.
CSS 3 è l'ultima evoluzione dei fogli di stile CSS. Contiene molte novità come angoli arrotondati, ombre, sfumature, transizioni o animazioni.
jQuery è una libreria JavaScript cross-platform progettata per semplificare lo scripting lato client.