Array
(
)

Upload passando porta e IP

PHP
Ivam Filho
   - 06 dez 2013

Preciso desenvolver um aplicativo web em PHP que faça upload de um arquivo de uma máquina local e envie o conteúdo para uma máquina indicando o IP e a porta desta máquina.
Alguém teria uma sugestão para me ajudar?

Samuel Diogo
   - 10 dez 2013


Citação:
Preciso desenvolver um aplicativo web em PHP que faça upload de um arquivo de uma máquina local e envie o conteúdo para uma máquina indicando o IP e a porta desta máquina.
Alguém teria uma sugestão para me ajudar?


#Código

não há muito o que fazer, veja:

$arquivo		=   $_FILES["arquivo"];
$arqDestino =    "/arquivos/";

if(!empty($arquivo))
{
    //renomeio o arquivo
    $arquivo['name']  =   'bn_'.$time.'_'.$arquivo['name'];
    $arqNome             =   $arquivo['name'];
    $arqTmpname          =   $arquivo['tmp_name'];
    $arqTamanho          =   $arquivo['size'];

}

 if($arqTamanho >0 && strlen($arqNome)>1)
        {	$CaminhoFull = $arqDestino. $arqNome;
			
            if(move_uploaded_file($arqTmpname,$CaminhoFull))
            {
                 echo "<script>alert('arquivo enviado!');</script>";
            }
        }



em tese, para fazer upload pela aplicação, deve ser feito o que descrevi acima, e claro dá pra melhorar e muito o codigo acima!

Quanto a portae tals, ai é que tá o problema. no exemplo acima, o servidor de arquivo deve ser o mesmo servidor web ou ter um redirecionamento interno no servidor, fiz aqui com samba.

Alternativa...

Mande via ftp pela aplicação, caso o servidor de arquivos não seja o mesmo servidor web.

tenho um codigo pronto aqui:
#Código
<?php
class ftp
{
	public function upload($ftp_server, $ftp_user_name, $ftp_user_pass, $path, $source_file, $destination_file){
		$ftp_server = $ftp_server;
		// set up basic connection
		$conn_id = ftp_connect($ftp_server, FTP_PORTA);
		set_time_limit(180);

		$ftp_user_name = $ftp_user_name;
		$ftp_user_pass = $ftp_user_pass;
		// login with username and password
		$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
		ftp_pasv($conn_id, true);
		
		// check connection
		if ((!$conn_id) || (!$login_result)) {			

		} else {
			//NOME DO ARQUIVO NO DESTINO
			$destination_file = $destination_file;
			//envio através de upload post
			$source_file = $source_file;
			//upload através de arquivo físico no cliente
			//$source_file = 'C:\Documents and Settings\eduardo.pereira\Meus documentos\mp3\MATANZA CD05 MTVAoVivoRioDeWhisky.mp3';
			// upload the file
			ftp_chdir($conn_id, $path);
			$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
		}
		// check upload status
		if (!$upload) {
			return FALSE;						
		} else {
			//upload efetuado
			return TRUE;						
		}

		// close the FTP stream
		ftp_close($conn_id);

	}

	public function deletar($ftp_server, $ftp_user_name, $ftp_user_pass, $source_file){
		$ftp_server = $ftp_server;
		// set up basic connection
		$conn_id = ftp_connect($ftp_server, FTP_PORTA);
		set_time_limit(180);
		

		$ftp_user_name = $ftp_user_name;
		$ftp_user_pass = $ftp_user_pass;
		// login with username and password
		$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
		ftp_pasv($conn_id, true);

		// check connection
		if ((!$conn_id) || (!$login_result)) {			
			
		} else {
			//NOME DO ARQUIVO NO DESTINO
			
			//envio através de upload post
			$source_file = $source_file;
			//upload através de arquivo físico no cliente
			//$source_file = 'C:\Documents and Settings\eduardo.pereira\Meus documentos\mp3\MATANZA CD05 MTVAoVivoRioDeWhisky.mp3';
			// upload the file
			ftp_chdir($conn_id, FTP_DIR);
			$upload = ftp_delete($conn_id, $source_file);			
		}
		// check upload status
		if (!$upload) {
			return FALSE;						
		} else {
			//upload efetuado
			return TRUE;						
		}

		// close the FTP stream
		ftp_close($conn_id);


	}
	
}
?>



lembre-se de configurar as permissões de escrita no diretório onde será feito o upload:

Citação:
#Código
no linux via terminal:

chmod -R 777 /var/www/arquivos/


espero ter ajudado!

Ivam Filho
   - 18 dez 2013

Ajudou bastante, o problema é que não dá para fazer por ftp, pois o servidor não é um computador, mas uma máquina unitarizadora uma impressora grande e tem um script próprio. mas talvez com samba resolva. Obrigado!