Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sergiogelli

UpLoad sem usar form

Recommended Posts

Olá

 

Estou tentando rodar um PHP em meu Site. Este PHP deveria fazer upLoad de um arquivo pré determinado de meu PC mas não estou tendo sucesso.

Esse upLoad deve ser feito sem o tradicional form onde escolhemos qual arquivo subir para o site. O arquivo deverá estar previamente informado dentro do PHP.

 

Por favor, alguém tem uma solução para isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é possível.

Essa invasão, do seu site conhecer a máquina do cliente. Seria uma baita brecha de segurança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é possível.

Essa invasão, do seu site conhecer a máquina do cliente. Seria uma baita brecha de segurança.

A maquina do cliente e minha

O PHP do servidor sou eu que instalou, e sou eu que estou executando ele, onde esta a brecha?

 

Sera que se eu usar um form e gravar o conteudo da $_FILES, poderia servir para uso posterior enviando seu conteúdo para o PHP que normalmente é chamado pelo form?

teste ligando Receber notificações de respostas via e-mail?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nops, não é possível "salvar" o conteúdo da $_FILES.

(quer dizer, mesmo que vc salve, vc não será capaz de "reutilizar" ele, e pegar o arquivo sem que o cliente faça a ação).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um comando em html que simule o apertar do botão "submt" ?

Ou qualquer forma de enviar o pedido de UpLoad sem que seja necessário escolher arquivo e pressionar "Enviar"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc está querendo abrir um shell remoto no computador do cliente?

Todo o arquivo quando enviado, tem que ser ciente pelo o usuário!

Ah não ser q vc cometa hacking!

Compartilhar este post


Link para o post
Compartilhar em outros sites

apertar o botão submit, é simples. Só executar, sei lá... no onload da página um javascript pra isso.

window.onload = function(){
    document.form.submit();
}

PS: Não testei.

 

Agora, escolher o arquivo automaticamente sempre, não sei se tem como.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um comando em html que simule o apertar do botão "submt" ?

sim, pode ser com .click() no submit ou .submit() no form.

 

Ou qualquer forma de enviar o pedido de UpLoad sem que seja necessário escolher arquivo e pressionar "Enviar"?

Não. E pela terceira vez: não é possível enviar um arquivo sem que o usuário escolha esse arquivo.

 

Voltando um passo: qual a necessidade ? que arquivo é esse ? pq vc quer enviar ele "do nada" ?

será sempre da sua máquina para sua máquina ? (apenas mover ele de lugar? pq?)

Compartilhar este post


Link para o post
Compartilhar em outros sites

você está querendo abrir um shell remoto no computador do cliente?

Todo o arquivo quando enviado, tem que ser ciente pelo o usuário!

Ah não ser q você cometa hacking!

Nao. Nada de shell

O cliente sou eu mesmo.

Sopondo que o pgm "upLoad.php" que coloquei em meu site está esperando uma chamada e eu já tenho os campos pré-preenchidos no form

Assim bastaria qualquer coisa que pressionasse o botão "submit" automaticamente. Ou seja bastaria chamar o "upLoad.html" pelo navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sergio, desculpa não estou entendendo, de verdade!

A maneira como o William e o Maykel disse são viáveis, mas sinceramente, se não supre

sua necessidade, estou boiando!!! :( :wacko:

A maneira como eu entendi, seria um cliente (vc ou qlqr outro) que acessaria uma página e os dados seriam enviados para o servidor, no caso um arquivo.

Enfim, não entendi!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, pode ser com .click() no submit ou .submit() no form.

 

Não. E pela terceira vez: não é possível enviar um arquivo sem que o usuário escolha esse arquivo.

Bem...Acho que tem muita agua rolando em baixo da ponte em informatica...:)

 

Voltando um passo: qual a necessidade ? que arquivo é esse ? pq você quer enviar ele "do nada" ?

será sempre da sua máquina para sua máquina ? (apenas mover ele de lugar? pq?)

Entendo que esta pensando. Mas fique tranquilo... nao sou hacker, cracker, ou qualquer coisa assim.

 

Apenas notei que a velocidade para subir arquivos e EXPETACULAR com PHP e quero deixar de usar meus programas que usam recursos do FTP

Os arquivos que pretendo trazer, sao todos TXT com movimentaçao diaria

Assim, hoje tenho um pgm escrito em C que verifica qualquer mudança e os envia para meu site via FTP

Contudo o local tem conexao estupidamente ruim. As vezes fica com menos de 50kb e a conexao FTP cai com facilidade.

 

 

A maneira como eu entendi, seria um cliente (você ou qlqr outro) que acessaria uma página e os dados seriam enviados para o servidor, no caso um arquivo.

Enfim, não entendi!

Sim, desejo acessar a pagina que tem um arquivo "upLoad.html" ou upLoad.php" com um form pre-prenchido com o nome do arquivo que desejo subir para o site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você pode fazer:

1º criar um script que lê todos os arquivos da pasta que você deseja.

2º gravar os nomes no banco de dados.

3º todas vezes que você der um F5 na página. Os arquivos do disco são verficados no banco de dados.

4º se exstem no disco e não existem no banco de dados, são enviados pela função FTP do PHP ou com abertura de socket codficado por você.

5º Não precisa abrir um form para isso. Ler o disco e FTP usando while é suficiente, dentro do while você abre um conexão FTP.

6º acho mas fácil verificar a existência do arquivo pelo tamanho, conforme o tamanho do arquivo, ele é "uplodado" para o servidor FTP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você pode fazer:

1º criar um script que lê todos os arquivos da pasta que você deseja.

2º gravar os nomes no banco de dados.

3º todas vezes que você der um F5 na página. Os arquivos do disco são verficados no banco de dados.

4º se exstem no disco e não existem no banco de dados, são enviados pela função FTP do PHP ou com abertura de socket codficado por você.

5º Não precisa abrir um form para isso. Ler o disco e FTP usando while é suficiente, dentro do while você abre um conexão FTP.

6º acho mas fácil verificar a existência do arquivo pelo tamanho, conforme o tamanho do arquivo, ele é "uplodado" para o servidor FTP.

Já uso uns sistema escrito em C que separa os arquivos modificados e envia ao Site por FTP. Contudo, a conexão que tenho lá no local, que tem os arquivos, é muito ruim e a conexão por FTP cai com facilidade e é muito mais lenta que o upload por PHP.

 

Fiz uns testes com upload PHP e fiquei entusiasmado com a velocidade. Só que para que fique perfeito, preciso automatizar e o uso obrigatório de um form impede isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se vc seguir os 6 passos você faz isso! Sinceramente, estou morrendo de preguiça, se escreveria para você!

O problema não é a velocidade, mas a maneira como você define as STREAMS na linguagem C. Acho que o desempenho do C piora um pouco mais quando se usa telas, não modo texto.

Uma conexão em C para um FTP demora pela maneira como você cria a conexão via socket. :upset:

Em php é uma "linhazinha" só. Testa usando perl ou Phyton para você é quase a mesma cosa, porque?

Praticidade das bibliotecas. :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP é alto nível, escrito em C lá embaixo.

C é de longe mais rápido que PHP. Se pra vc não foi, vc fez algo muito errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É possível vc enviar um post pro servidor sem form, utilizando cURL.

E é possível enviar um arquivo via ftp com php, sem form, utilizando as funções de ftp

 

http://wbruno.com.br/php/upload-de-arquivo-ftp-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Escrito em Perl, para exemplo:

use Net::FTP;
my $filename;

$hostname='ftp.site.com';
$username='root';
$password='*********';


$home='/';
$filename=$ARGV[0]; // qual arquivo para enviar?

print "\n. . . .:. Conectandoooooo .:. . . . \n";
$ftp=Net::FTP->new($hostname);
$ftp->login($username, $password) or die "Error $! ";
print "  . . . .:. ... . C O N E C T A D O . ... .:. . .. \n";
print "  . . . .:. Enviando o arquivo $filename  .:. . . . \n";
$ftp->put($filename) or die "Error $! ";
print ". . . . .:. Arquivo $filename enviado com sucesso .:. . . . \n";
print ". . . . . .:. Saindooooooooooooo do FTP........ .:. ... \n";
$ftp->quit;
print " . . . . . . .:. DESCONECTADO .:. . . . . . . \n\n\n";
exit;
# código em Perl escrito pelo virose!

Veja essa estrutura, escrito em perl, parecido com PHP!

Se você colocar cada arquivo dentro do array, criar um for para executar o script FTP e um insert para registrar um log no banco já resolve seu problema. Veja:

$flag = 0;
for ($i = 0; $i <= $#ultimo_elemento; $i++){
$arquivo = $arquivo[$i];
use Net::FTP;
my $filename;

$hostname='ftp.site.com';
$username='root';
$password='****************';

$home='/';
$filename=$arquivo;

print "\n. . . .:. Conectandoooooo .:. . . . \n";
$ftp=Net::FTP->new($hostname);
$ftp->login($username, $password) or die "Error $! ";
print "  . . . .:. ... . C O N E C T A D O . ... .:. . .. \n";
print "  . . . .:. Enviando o arquivo $filename  .:. . . . \n";
$ftp->put($filename) or die "Error $! ";
print ". . . . .:. Arquivo $filename enviado com sucesso .:. . . . \n";
print ". . . . . .:. Saindooooooooooooo do FTP........ .:. ... \n";
$ftp->quit;
print " . . . . . . .:. DESCONECTADO .:. . . . . . . \n\n\n";

}
if ($flag == $#ultimo_elemento) {
echo "Todos os arquivos foram enviados com sucesso!;
}
else {
$erros = $flag - $#ultimo_elemento;
print "Houve ".$flag." erros";
}
exit(0);
# adaptei!

Cara é isso, aproveita que você tem um programa e C e criei um arquivo com os arquivos novos, da´você alimento seu script FTP/PHP.

É isso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP é alto nível, escrito em C lá embaixo.

C é de longe mais rápido que PHP. Se pra você não foi, você fez algo muito errado.

C e mais rapido que PHP e ponto final. Mas para coisas identicas.

 

Mas comparar um uploads com PHP (intalado em algum site)

e o identico upload usando C com FTP rodando em um PC e piada.

E uma verdadeira briga entre uma Ferrari e uma carroça

Pode testar.

 

Provavelmente e porque o FTP tem que procurar DNS. ver PORTA, verificar LOGIN, verificar SENHA e sei la o que mais.

 

Tem ainda um fato (discutivel) que a conexao FTP cai com facilidade quando usada com sinal ruin ( uns 50 kb)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.