- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con classe upload
-
Problema con classe upload
Ciao a tutti!
Ho creato una piccola classe per l'upload delle immagini, ma ho due problemi:- nella visualizzazione degli errori, mi da errore sconosciuto
- non mi rinomina il file se è gia esistente sul server
Vi posto il codice di class.Upload.php:
[PHP]<?php
/********************/
//PHP Image Uploader//
//Il Net-Surfer //
//2008-2009 //
//Lunedì 10 Novembre 2008//
/*******************/
class Upload
{ //Start class
public $_error; //Var degli errori
public $_message; //Var dei messaggi
public $_new_file_name; //Var nome file
public $_type; //Var tipo MIME
public $_ext; //Var estensione
public $_complete_name_and_path; //Var PATH + NOME
public $_row_my_query; //Var ARRAY ottenuto con MYSQL_FETCH_ARRAY/**
*
*
__construct
All'apertura di una nuova istanza, controlla se esiste la cartella dei file
Se non esiste, verrà creata
*
*
**/function __construct($_dir_name)
{
if(!is_dir($_dir_name))
{
mkdir($_dir_name,0777);
}
}/**
*
*
Upload
Funzione principale
Effettua l'upload, la rinominazione del file, lo spostamento e l'inserimento dei files nella cartella
*
*
**/function upload($_resource_data,$dir,$mysql)
{
$this->_complete_name_and_path = $dir.$_resource_data['name'];
while(file_exists($_resource_data['name']))
{$id += 1;
$this->complete_name_and_path = $dir.$id."".$_resource_data['name'];}
if(!@move_uploaded_file($_resource_data['tmp_name'],$this->_complete_name_and_path))
{$this->_error = "Impossibile copiare il file nella directory";
}
/*if(!@rename( $this->_new_file_name ,$this->_complete_name_and_path ))
{$this->_error = "Impossibile rinominare il file <b>".$this->_new_file_name."</b>";
}
*/
$complete_path = $_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-10).$dir.$this->_complete_name_and_path;
$my_query = mysql_query("INSERT INTO ".$mysql['table_prefix']."images(image_id,image_src,image_new_name,image_complete_path)VALUES(null,'$_resource_data[name]','$this->_new_file_name','$this->_complete_name_and_path')");
$my_new_query = mysql_query("SELECT * FROM ".$mysql['table_prefix']."images WHERE ".$mysql['table_prefix']."images.image_src='$_resource_data[name]'");
$this->_row_my_query = mysql_fetch_array($my_new_query);
$this->_message = "Upload eseguito con successo!";}
/**
*
*
check_correct_files_in_array
Funzione che restituisce un errore se l'estensione del file uplodato non è contenuta nell'array delle estensioni
*
*
**/function check_correct_files_in_array($_array)
{
if(!in_array($this->_ext,$_array))
{
$this->_error = "Non sono ammessi files di tipo <br>\n<b>".$this->_type."</b> con estensione .".$this->_ext."";
}
}
/**
*
*
check_filetype
Restituisce il tipo di file(image/jpg, image/png, image/gif, ecc)
*
*
**/
function check_filetype($_resource_file_name)
{if(empty($_resource_file_name))
{
$this->_type = "File di tipo indefinito";
}
else
{
$this->_type = $_resource_file_name;
}}
/**
*
*
set_file_ext
Funzione che restituisce l'estensione del file
*
*
**/
function set_file_ext($_resource_file_name){
$ext_file = explode("." , $_resource_file_name);
$count_ext_files = count($ext_file)-1;
$this->_ext = $ext_file[$count_ext_files];
}/**
*
*
check_error
Funzione che restituisce un messaggio d'errore in corrispondenza di un errore nell'upload del file
*
*
**/function check_error($_resource_file){
switch($_resource_file)
{
case UPLOAD_ERR_NO_FILE:
$this->_error = "Non è stato selezionato alcun file!";
break;case UPLOAD_ERR_INI_SIZE:
$this->_error = "è stato riscontrato un errore!Il file è troppo grande secondo le impostazioni del file php.ini!";
break;case UPLOAD_ERR_FORM_SIZE:
$this->_error = "Le dimensioni superano il valore massimo consentito!";
break;case UPLOAD_ERR_PARTIAL:
$this->_error = "è stato riscontrato un errore nell'upload!";
break;case UPLOAD_ERR_OK:
$this->_error = "";
break;default:
$this->_error = "è stato riscontrato un errore sconosciuto!";
break;
}
}
}?>[/PHP]
File upload.php
[PHP]<?php
/********************/
//PHP Image Uploader//
//Il Net-Surfer //
//2008-2009 //
//Lunedì 10 Novembre 2008//
/*******************/require "config.inc.php";
require "class.Upload.php";$_upload = new Upload($upload_dir);
$_my_file = $_FILES['file'];
$_upload->check_error($_my_file);
if($_upload->_error != "") die ($_upload->_error);
$_upload->check_filetype($_my_file['type']);
$_upload->set_file_ext($_my_file['name']);
$_upload->check_correct_files_in_array($image_type);
if($_upload->_error != "") die ($_upload->_error);
$_upload->upload($_my_file,$upload_dir,$mysql);
if($_upload->_error != "") die ($_upload->_error);
echo $_upload->_message;
?>
<div align="left">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="16"><img src="images/top_lef.gif" width="16" height="16"></td>
<td height="16" background="images/top_mid.gif"><img src="images/top_mid.gif" width="16" height="16"></td>
<td width="24"><img src="images/top_rig.gif" width="24" height="16"></td>
</tr>
<tr>
<td width="16" background="images/cen_lef.gif"><img src="images/cen_lef.gif" width="16" height="11"></td><td align="center" valign="middle" bgcolor="#FFFFFF"><font face="Trebuchet MS" size="2" color="#3366FF">Ecco la tua immagine:</font> <br><font face="Trebuchet MS" size="2" color="#3366FF">Per vederla nelle sue dimensioni originali, <a href="image.php?id=<?php echo $_upload->_row_my_query['image_id']; ?>">clicca qui</a></font> </td> <td width="24" background="images/cen_rig.gif"><img src="images/cen_rig.gif" width="24" height="11"></td> </tr> <tr> <td width="16" background="images/cen_lef.gif"><img src="images/cen_lef.gif" width="16" height="11"></td> <td align="center" valign="middle" bgcolor="#FFFFFF"><img src="<?php echo $_upload->_complete_name_and_path; ?>" width="250" height="250" vspace="0" border="1" hspace="0"></td> <td width="24" background="images/cen_rig.gif"><img src="images/cen_rig.gif" width="24" height="11"></td> </tr> <tr> <td width="16" height="16"><img src="images/bot_lef.gif" width="16" height="16"></td> <td height="16" background="images/bot_mid.gif"><img src="images/bot_mid.gif" width="16" height="16"></td> <td width="24" height="16"><img src="images/bot_rig.gif" width="24" height="16"></td> </tr>
</table>
</div>
<p align="left"><font face="Trebuchet MS" size="3" color="#3366FF">Ecco il
link della tua immagine:</font></p>
<p align="left"><font size="3"><textarea rows="2" cols="26"><?php echo $_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-10).$image_new_name; ?></textarea></font></p><p align="left"><font size="3"> </font><font face="Trebuchet MS" size="3" color="#3366FF">Ecco il link della tua immagine per forum:</font></p>
<p align="left"><font size="3"><textarea rows="2" cols="26">[URL=<?php echo $_SERVER['SERVER_NAME']; ?>]</textarea></font></p>
<p align="left"><font size="3" color="#3366FF" face="Trebuchet MS">Ecco il link
della tua immagine hostata:</font></p>
<p align="left"><font size="3"><textarea rows="2" cols="26"><?php echo $_SERVER['SERVER_NAME'].substr($_SERVER['REQUEST_URI'],0,-10)."image.php?id=".$row_my_query['image_id'];?></textarea></font></p>
<p align="center"><font size="3"><font face="Trebuchet MS" color="#3366FF">Grazie per
aver utilizzato</font> <font color="#3366ff" face="Trebuchet MS">PHP Image
Uploader</font></font></p>
[/PHP]Nel file upload.php, per far funzionare tutto, sono costetto a fare così:
//$_upload->check_error($_my_file);
//if($_upload->_error != "") die ($_upload->_error);
Potreste aiutarmi?
-
Ciao ilnetsurfer,
capire quale sia il problema, così a botta secca, non è banale...Prova a farti stampare tutto l'array $_FILES['file'] con un var_dump, nel caso in cui hai l'errore, così riesci a vedere cosa accade di preciso alle diverse variabili.
Inoltre, i file uplodati hanno i permessi corretti per essere sovrascritti?
-
Si, possono essere sovrascritti...
a me basta che mettino un numero progressivo all'inizio...