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 MTVAoVivo\18RioDeWhisky.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 MTVAoVivo\18RioDeWhisky.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ódigono 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!