FTP Remoto de Servidor para Servidor
Após alguns dias de pesquisa, principalmente no PHP.net (sem exemplo de como fazer), elaborei e testei uma função que é muito simples mas quase ninguém conhece. Com ela pode-se transferir remotamente arquivos de um diretório do seu servidor local para digamos o ftp.kit.net, o hpg, ou o geocities, ou seu novo host!
Constatei que do servidor que hospedo (2Assembler.com) para o ftp.br.geocities.com (as páginas do Yahoo), a transferência de 24 arquivos de imagens durou uns fantásticos 3 segundos. Mas a mesma pode demorar ate 2 minutos e meio como foi o caso para o hpg, ou não fazer a conexão de jeito algum como me aconteceu para o ftp.kit.net usando o mesmo servidor. Mas utilizando outro, funcionou normalmente.
O segredo para isso é apenas abrir o arquivo que se deseja enviar pelo função fopen() no seu servidor, abrir uma conexão FTP e transferir com a função ftp_fput().
Abaixo a função (que adicionei à classe mencionada):
Constatei que do servidor que hospedo (2Assembler.com) para o ftp.br.geocities.com (as páginas do Yahoo), a transferência de 24 arquivos de imagens durou uns fantásticos 3 segundos. Mas a mesma pode demorar ate 2 minutos e meio como foi o caso para o hpg, ou não fazer a conexão de jeito algum como me aconteceu para o ftp.kit.net usando o mesmo servidor. Mas utilizando outro, funcionou normalmente.
O segredo para isso é apenas abrir o arquivo que se deseja enviar pelo função fopen() no seu servidor, abrir uma conexão FTP e transferir com a função ftp_fput().
Abaixo a função (que adicionei à classe mencionada):
<?php // upload file from server to server (BobFrank) function srv2srv($from, $to) { $from_fp = fopen($from, "r"); if (!$from_fp) { return false; } if ($this->FTP_MODE == "FTP_BINARY") { $mode = FTP_BINARY; } else { $mode = FTP_ASCII; } if (!@ftp_fput($this->con_id, $to, $from_fp, $mode)) { $this->error("Cannot send file"" . $from . " -> " . $to . """); return false; } return true; } ?>
Qual a linha que eu devo colocar no .php para que ele execute os comandos e onde eu configuro as infos como path de envio?
12/09/2004 7:32am
(~20 anos atrás)
Ola
esta é a variavel de cotação
$file
$boot_not)&=not
bom desenvolvi um novo script muito impotate para conexao FTP segura no PHP 4.0 qualquer duvida de mande um e-mail...
$if
$file_protocol
$transfer ()input_combox
$tester tk&¨*
"aqui usuario FTP" = ftp.seudominio.com "pega" $ftp
senha!" aqui a senha "suasenhaaqui" $senha
!!!¨¨¨conection
open_!14145162121-seconts.php
open_list.php
open_cmd_777
dir copy
file protocol
esta é a variavel de cotação
$file
$boot_not)&=not
bom desenvolvi um novo script muito impotate para conexao FTP segura no PHP 4.0 qualquer duvida de mande um e-mail...
$if
$file_protocol
$transfer ()input_combox
$tester tk&¨*
"aqui usuario FTP" = ftp.seudominio.com "pega" $ftp
senha!" aqui a senha "suasenhaaqui" $senha
!!!¨¨¨conection
open_!14145162121-seconts.php
open_list.php
open_cmd_777
dir copy
file protocol
26/11/2003 12:38pm
(~21 anos atrás)
Exelente artigo...
esse código pode ajudar e muito na vida de um progamador quando quer mudar de servidor...
esse código pode ajudar e muito na vida de um progamador quando quer mudar de servidor...
03/09/2003 6:13pm
(~21 anos atrás)
Olá Marco,
A variavel $files vem da transformação do array f[] na função:
foreach ($f as $files)
Quanto a sua necessidade, passo um exemplo retirado da php.net que mostra como fazer:
####################################
kiwo1 at yahoo dot com
28-Aug-2002 12:05
Friends,
If you wanna upload files from your harddisk by a form to a specified ftp this sample can help you...
First of all create the form:
<html>
<body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff" link="#0000ff">
<form name="Attachments" method=POST action="sendimage.php" enctype="multipart/form-data">
<input type=hidden name=box value="">
<tr>
<td nowrap width="1%"> Image:</td>
<td colspan=2>
<input type=file name=source_file size=20> <br>
</td>
</tr>
<input type=submit name=btnSubmit value=Submit size=20 style="border: 1px solid #0000FF"></form>
</body>
</html>
The critical point in this form is the usage of enctype="multipart/form-data"
If you don't use this part your upload operations won't work.
Then u must create sendimage.php as follows:
<?php
$ftp_server='190.148.20.201';//serverip
$conn_id = ftp_connect($ftp_server);
// login with username and password
$user="username";
$passwd="*****";
$login_result = ftp_login($conn_id, $user, $passwd);
// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
die;
} else {
echo "<br>Connected to $ftp_server, for user $user<br>";
}
//directorylike /www.velibaba.com/images
ftp_chdir($conn_id, "www.velibab.com");
ftp_chdir($conn_id, "compimages");
//$destination_file=ftp_pwd($conn_id);
$destination_file="x.jpg";
echo ("<br>");
print $destination_file;
echo ("<br>");
// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}
// close the FTP stream
ftp_close($conn_id);
?>
In this example code $source_file is the path of the file in your disk, and destination file is the name of the uploaded file in ftpserver.
In this code I use ftp_chdir to give the path of the
uploaded file within ftpserver..
For your questions about all categories of PHP my email:kiwo1@yahoo.com
c u...
##########################################
Espero ter ajudado,
Roberto
A variavel $files vem da transformação do array f[] na função:
foreach ($f as $files)
Quanto a sua necessidade, passo um exemplo retirado da php.net que mostra como fazer:
####################################
kiwo1 at yahoo dot com
28-Aug-2002 12:05
Friends,
If you wanna upload files from your harddisk by a form to a specified ftp this sample can help you...
First of all create the form:
<html>
<body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff" link="#0000ff">
<form name="Attachments" method=POST action="sendimage.php" enctype="multipart/form-data">
<input type=hidden name=box value="">
<tr>
<td nowrap width="1%"> Image:</td>
<td colspan=2>
<input type=file name=source_file size=20> <br>
</td>
</tr>
<input type=submit name=btnSubmit value=Submit size=20 style="border: 1px solid #0000FF"></form>
</body>
</html>
The critical point in this form is the usage of enctype="multipart/form-data"
If you don't use this part your upload operations won't work.
Then u must create sendimage.php as follows:
<?php
$ftp_server='190.148.20.201';//serverip
$conn_id = ftp_connect($ftp_server);
// login with username and password
$user="username";
$passwd="*****";
$login_result = ftp_login($conn_id, $user, $passwd);
// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
die;
} else {
echo "<br>Connected to $ftp_server, for user $user<br>";
}
//directorylike /www.velibaba.com/images
ftp_chdir($conn_id, "www.velibab.com");
ftp_chdir($conn_id, "compimages");
//$destination_file=ftp_pwd($conn_id);
$destination_file="x.jpg";
echo ("<br>");
print $destination_file;
echo ("<br>");
// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";
}
// close the FTP stream
ftp_close($conn_id);
?>
In this example code $source_file is the path of the file in your disk, and destination file is the name of the uploaded file in ftpserver.
In this code I use ftp_chdir to give the path of the
uploaded file within ftpserver..
For your questions about all categories of PHP my email:kiwo1@yahoo.com
c u...
##########################################
Espero ter ajudado,
Roberto
03/09/2003 5:40pm
(~21 anos atrás)
Da onde vem o valor da variavel $files?
Nao seria $file?
Codigo:
if ($ftp->srv2srv($LOCAL_SERVER_DIR . $files, $files)) {
Estou perguntando isso porque estou fazendo um script que envia arquivos via FTP, user2server e vi que a funcao para upload
ftp_put($conn_id, "$arqServidor", "$arqLocal", FTP_ASCII);
Precisa do arquivo de origem e o de destino.
Como faco para colocar somente um campo no formulario de envio (o arquivo de origem) ?
Ex:
origem: D:\Imagens\vasco.jpg
destino: vasco.jpg
Eu teria q manipular a string $arqServidor?
Obrigado,
Marco Modesto.
Nao seria $file?
Codigo:
if ($ftp->srv2srv($LOCAL_SERVER_DIR . $files, $files)) {
Estou perguntando isso porque estou fazendo um script que envia arquivos via FTP, user2server e vi que a funcao para upload
ftp_put($conn_id, "$arqServidor", "$arqLocal", FTP_ASCII);
Precisa do arquivo de origem e o de destino.
Como faco para colocar somente um campo no formulario de envio (o arquivo de origem) ?
Ex:
origem: D:\Imagens\vasco.jpg
destino: vasco.jpg
Eu teria q manipular a string $arqServidor?
Obrigado,
Marco Modesto.
03/09/2003 11:58am
(~21 anos atrás)
Obrigado Alessander,
Desejei colocar a alteração lá, mas deveria preencher formulários e tal que enviei um e-mail para o Max V. Moiseenko o criador da classe.
Então, coloquei minha contribuição na php.net em http://br2.php.net/manual/en/function.ftp-fput.php
Obtigado!
Desejei colocar a alteração lá, mas deveria preencher formulários e tal que enviei um e-mail para o Max V. Moiseenko o criador da classe.
Então, coloquei minha contribuição na php.net em http://br2.php.net/manual/en/function.ftp-fput.php
Obtigado!
26/08/2003 7:17am
(~21 anos atrás)
Parabéns pelo artigo, nunca pensei na possibilidade de fazer tal operação e pelo que li é muito simples.
Você colocou no phpclasses a modificação que você fez? Seria muito interessante.
Obrigado, Alessander
Você colocou no phpclasses a modificação que você fez? Seria muito interessante.
Obrigado, Alessander
26/08/2003 3:48am
(~21 anos atrás)