30/11/2008 15:32
(Questo messaggio è stato modificato l'ultima volta il: 30/11/2008 15:36 da Chandler.)
Salve a tutti...sto cercando di realizzare uno script di Upload di TUTTI i tipi file con successiva catalogazione (in alto) di quelli già caricati con link per download...
Ho provato a modificare degli scrip già pronti ma il risultato nn è stato dei migliori...come struttura credo che vada bene questo file:
come vedrete il file si collega ad un class:
che ne gestisce i formati, le dimensioni etc...
Mentre come interfaccia grafica nn mi dispiace questo:
Sarebbe possibile fare una via di mezzo?? ovvero un file che abbia l'intterfaccia di quest'ultimo file ma con la struttura dei primi due...
Ho provato a modificare degli scrip già pronti ma il risultato nn è stato dei migliori...come struttura credo che vada bene questo file:
Codice PHP:
uploaz.php:
<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 = "upload/files";
// 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 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>
Codice PHP:
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;
}
}
}
?>
Mentre come interfaccia grafica nn mi dispiace questo:
Codice PHP:
Upload.html:
<HTML>
<HEAD>
<TITLE>Virtual PHP File Uploader v1.0</TITLE>
</HEAD>
<BODY>
<FORM ACTION="upload.php" METHOD="POST" ENCTYPE="multipart/form-data">
<P>
<CENTER>
<P>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="36%" HEIGHT="80">
<TR>
<TD HEIGHT="20" COLSPAN="3" BGCOLOR="#0268A6"></TD>
</TR>
<TR>
<TD HEIGHT="20" COLSPAN="3" BGCOLOR="silver">
<P ALIGN="CENTER"><B><FONT FACE="Verdana">Upload A File</FONT></B>
</TD>
</TR>
<TR>
<TD WIDTH="6%" HEIGHT="67" BGCOLOR="silver"></TD>
<TD WIDTH="88%" HEIGHT="67" BGCOLOR="silver">
<P ALIGN="CENTER"> <INPUT TYPE="file" NAME="img1" SIZE="30">
</TD>
<TD WIDTH="6%" HEIGHT="67" BGCOLOR="silver"></TD>
</TR>
<TR>
<TD HEIGHT="54" COLSPAN="3" BGCOLOR="silver">
<CENTER>
<P><INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Upload File">
</CENTER>
</TD>
</TR>
<TR>
<TD WIDTH="6%" BGCOLOR="#0268A6"></TD>
<TD WIDTH="88%" BGCOLOR="#0268A6"></TD>
<TD WIDTH="6%" BGCOLOR="#0268A6"></TD>
</TR>
</TABLE>
</CENTER><P>
</FORM>
</BODY>
</HTML>