Newsgroup: it.comp.www.php
Titolo: upload "strano"

Salve a tutti,
ho realizzato uno script per l'upload dei file utilizzando l'istruzione
copy(), ma ho notato che per file con testo particolarmente lungo
(attenzione, parliamo di file di circa 600/800 Kb), mi da questo errore:
ERROR
The requested URL could not be retrieved
While trying to retrieve the URL:
<
http://www.dominio.it/..
.> 
The following error was encountered: 
* Write Error 
The system returned: 
    (10053) WSAECONNABORTED, Software caused connection abort.
An error condition occurred while writing to the network. Please retry
your
request. 
o comunque mi ritorna l'errore 500.
Allora domando: devo migrare all'upload con le funzioni ftp (sempre che
queste funzionino) oppure c'è qualche impostazione alla configurazione
che andrebbe rivista sul server?
Grazie per l'aiuto
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Kb), mi da questo errore:
Definisci che cosa intendi per "upload", perche' da quello che hai
scritto nel messaggio non si capisce.
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

 scritto nel messaggio non si capisce.
Trasferimento di un file dal client al server tramite un form.


 Trasferimento di un file dal client al server tramite un form.
Non usare copy ma move_uploaded_file, poi posta il codice della pagina
che genera l'errore.


 che genera l'errore.
Ho usato move_uploaded_file ma l'errore è sempre:
Impossibile trovare il server o errore DNS.
In realtà uso la class XUpload scaricata da PHPClasses che usa, cmq,
copy(). Ho fatto la sostituzione ma il risultato è sempre lo stesso.
Ciao e Grazie


 copy(). Ho fatto la sostituzione ma il risultato è sempre lo stesso.
[mi quoto]
posta il codice della pagina che genera l'errore.
[/quoto]


Posto il codice:
	$tabella_utente="soc_servizi";
	include "documenti.class.php";
	if (!$_POST)
	{
		$ls=new Documenti($user_db,$pass_db,$database,'');
		$ls->id_user=$_SESSION[admservizio];
		$ls->table=$table;
	}
	else
	{
		$ls=new Documenti($user_db,$pass_db,$database,$_POST);
		$ls->id_user=$_SESSION[admservizio];
		$ls->table=$table;
		if ($action=="update")
		{
			$insertID=$id;
			$ls->updateDocumenti();
		}
		include "../class/upload.class.php";
			$var="allegato";
			$up=new XUpload($var,0,1);
			$name=$up->get_filename();
/****** forzo in minuscolo e sostituisco gli spazi con _ nel nome del
file
*/
			$name=strtolower($name);
			$name=preg_replace("/\s/","_",$name);
//			$name=preg_replace("/\\\'/","",$name);
/************************************************************************/
			if ($name)
			{
				$checkFile="$path_docServizi/$name";
				$only_name=substr($name,0,strpos($name,"."));
				$ext=substr($name,-4,4);
				$k=1;
########### rinomino il file con incremento se esiste #############
				if (empty($_POST[over_allegato]))
				{
					do
					{
						if (file_exists($checkFile))
						{
							$new_name="$only_name"."$k"."$ext";
							$checkFile="$path_docServizi/$new_name";
							$k++;
						}
						else
							break;
					}while($k>1);
				}
##################################################################
				$up->setDir($path_docServizi);
				$ext=$up->checkExtension();	//CONTROLLO L'ESTENZIONE
				$size=$up->checkFileSize();	//CONTROLLO LA DIMENSIONE IN Kb
				if ($ext)
				{
					if ($k>1)
					{
						$up->changeFilename($new_name);
						$name=$new_name;
					}
					$error=$up->xCopy();
					if ($error)
					{
						if ($action=="insert")
							$insertID=$ls->insertDocumenti();
						$report.="Il file <b>$name</b> &egrave; stato trasferito sul
server con successo<br>";
						$res=mysql_query("UPDATE $table SET
$var='$url/documenti/doc_servizi/$name' WHERE id=$insertID");
					}
					else
						$report.="<font color=\"#FF0000\">Il file <b>$name</b> non
&egrave; stato trasferito sul server con successo</font><br>";
				}
				else
					$report.="<font color=\"#FF0000\">L'estenzione o la dimensione del
file <b>$name</b> non rispondono alle specifiche indicate</font><br>";
			}
			else
			{
				if ($action=="insert")
				{
					$insertID=$ls->insertDocumenti();
				}
			}
			$status=1;
	}	
	if ($action=="delete")
	{
		$ls->table=$table;
		$ls->deleteDocumento($id);


Questo è il codice della classe upload.class.php (XUpload.class.php) che
fa l'upload
  	function xCopy($uploaded_name="")
	{
		global $HTTP_REFERER;
		$url=parse_url( $HTTP_REFERER );
		$this_domain = $url["scheme"]."://".$url["host"]; //get domain script
is called from
		if ( $this->cls_file!="none")
		{
			if( !$this->checkExtension() )
			{
				$this->cls_copyCode = 1; // extension not accepted
			}
			else
			{
					$this->setCompleteFilename();
					if( $this->filenameExist( $this->cls_copyfile ) )
					{
						if ( $this->cls_overWrite ) //check overwrite flag
						{
							if (!unlink( $this->cls_copyfile ))
							{
								$this->cls_copyCode = 3; // can't delete remote file
							}
							else //continue the copy process
							{
								$this->cls_copyCode =
$this->resumeCopy($this_domain,$uploaded_name);
							}
						}
						else
						{
							$this->cls_copyCode = 4; // file exists and OverWrite not set
						}
					}
					else
					{
						$this->cls_copyCode =
$this->resumeCopy($this_domain,$uploaded_name);
					}
			}
		}
		else
		{
			if (!empty($this->cls_filename) )
				$this->cls_copyCode = 2;
			else
				$this->cls_copyCode = 8;
		}
		return (!$this->cls_copyCode);
	}
	/** resumeCopy()
	** Private funtion to resume the copy process.
	** DO NOT CALL THIS FUNCTION, IS AUTOMATICALLY CALLED IN xCopy() method
	** @returns 0 if copy was succesfull, int code if an error occurred.
	** Also sets error flag( look show_progressMessage() method below)
	*/
	function resumeCopy($this_domain,$uploaded_name)
	{
		if ($cls_domain_check)
		{
			// make sure calling from this domain
			if( $this_domain != $this->cls_referer_domain )
			{
				return 7; // external script!
			}
		}
		// try to copy the file
		if( copy( $this->cls_file, $this->cls_copyfile ))
		{
			// rename uploaded file if needed
			if( $this->cls_rename_file )
			{
				//check if user give a new name or wants a random name
				$temp_name = ($uploaded_name)? $this->changeFilename($uploaded_name)
: $this->changeFilename();
				if( !rename( $this->cls_copyfile, $temp_name ))
				{
					return 5; // copy sucess, but renaming file failed
				}
				else
				{
			              $this->cls_copyfile = $temp_name; // just in case we
need final complete path
				}
          		}
			return 0; // copy success
        	}
		else
		{
			return 6; // copy failed!


 Posto il codice:
Non vedo alcuna form di upload, non vedo l'utilizzo di $_FILES.


 Non vedo alcuna form di upload, non vedo l'utilizzo di $_FILES.
La form di upload è un normalissimo campo file inviato con method POST e
la variabile $_FILES non la uso perchè la classe upload.class.php nella
creazione dell'oggetto
$up=new XUpload('campofile',0,1);
mi richiede il nome del campo file.
L avariabile $_FILES non è utilizzata, peraltro, neanche nel codice
della classe. Pensi sia questo il problema?
Utilizzando $_FILES potrei risolvere il mio problema?
Grazie per la pazienza e la disponibilità


 Utilizzando $_FILES potrei risolvere il mio problema?
Perche' invece di usare una classe non scrivi da te il codice?
L'esempio del manuale ufficiale e' completo, puoi partire da quello.


 L'esempio del manuale ufficiale e' completo, puoi partire da quello.
Ok Setec.
Grazie per la tua disponibilità e competenza
