| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
aalmeidasp Aprendiz

Registrado: Segunda-Feira, 24 de Mai de 2010 Mensagens: 191
|
Enviada: Dom Set 13, 2015 4:48 pm Assunto: Carregar uma imagem em um servidor FTP sem fazer download |
|
|
Pessoal,
Estou fazendo uma APP que tem que ler algumas imagens de um servidor FTP. porém nao gostaria de ficar transferindo os arquivos para o celular cada vez que tivesse que abrir uma imagem. Queria somente poder carregar o arquivo de imagem em um componente TRectangle sem ter que fazer o download dele. É possivel fazer isso em Delphi? |
|
| Voltar ao Topo |
|
 |
DonOctavioDelFlores Colaborador

Registrado: Quarta-Feira, 12 de Setembro de 2007 Mensagens: 2630 Localização: Pra lá de Bagda
|
Enviada: Dom Set 13, 2015 11:53 pm Assunto: |
|
|
Completamente possivel, voce tem 3 opcoes.
1) magica.
2) voce mostra uma imagem qualquer e diz que é a que vc queria mostrar. A maioria dos usuarios nem presta atencao mesmo...
3) caso sejam sempre as mesmas imagens vc pode fazer um cache.
https://en.wikipedia.org/wiki/Cache_%28computing%29
Tirando isso, só transferindo a imagem propriamtente dita. _________________ “The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart |
|
| Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Dom Dez 27, 2015 7:56 pm Assunto: Re: Carregar uma imagem em um servidor FTP sem fazer download |
|
|
| aalmeidasp escreveu: | Pessoal,
Estou fazendo uma APP que tem que ler algumas imagens de um servidor FTP. porém nao gostaria de ficar transferindo os arquivos para o celular cada vez que tivesse que abrir uma imagem. Queria somente poder carregar o arquivo de imagem em um componente TRectangle sem ter que fazer o download dele. É possivel fazer isso em Delphi? |
Para FTP, use os componente TIdFtp e o TMemoryStream;
com TIdFtp você conecta ao host com user e pass.
com a função IdFTP1.Get() voce pega a imagem do servidor ftp e joga na memoria usando o TMemoryStream
veja o exemplo abaixo.
| Código: |
procedure TForm2.Button1Click(Sender: TObject);
var
mstm: TMemoryStream; // este cara vai ser bem útil
begin
IdFTP1.Host := 'UserName Aqui'; // usuario
IdFTP1.Password := 'PassWord Aqui'; // senha
IdFTP1.Port := 21; // padrão ftp 21 mais não nescessariamente será sempre 21.
IdFTP1.Connect; // conecto a servidor
mstm := TMemoryStream.Create; // instancia
IdFTP1.Get('/files/image.png', mstm, true); // pegando a imagem e jogando no TMemoryStream
mstm.Position := 0; // seto a posição igual a zero
Image1.Picture.Graphic.LoadFromStream(mstm); // jogando a imagem de TMemoryStream para o timage
IdFTP1.Disconnect; // desconectando
mstm.Free; liberando a instancia
end; |
neste caso você ainda baixa a imagem, contudo em vez para o disco, ou sdcard baixa diretamente para memoria onde por sua vez quando a aplicação for fechada sumira sem deixar qualquer rastro. _________________ Tudo podemos quando tudo sabemos! |
|
| Voltar ao Topo |
|
 |
claudio.ferreira Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013 Mensagens: 667
|
Enviada: Seg Dez 28, 2015 10:02 am Assunto: |
|
|
Seguindo a linha de pensamento do DonOctavio, teria uma quarta opção :
TMI - Transmissão mediúnica de imagens, onde o usuário imagina e vê a imagem requerida na própria mente. _________________ Sistema SNGPC para farmácias
http://www.cmasistemas.com.br
Rastreabilidade de Medicamentos
https://www.sncm.com.br
Soluções em Delphi
https://delphisolutions.wordpress.com/
.
"E não sabendo que era impossível, foi lá e fez"
Mark Twain |
|
| Voltar ao Topo |
|
 |
aalmeidasp Aprendiz

Registrado: Segunda-Feira, 24 de Mai de 2010 Mensagens: 191
|
Enviada: Sex Jan 15, 2016 7:12 pm Assunto: Re: Carregar uma imagem em um servidor FTP sem fazer download |
|
|
| strak2012 escreveu: | | aalmeidasp escreveu: | Pessoal,
Estou fazendo uma APP que tem que ler algumas imagens de um servidor FTP. porém nao gostaria de ficar transferindo os arquivos para o celular cada vez que tivesse que abrir uma imagem. Queria somente poder carregar o arquivo de imagem em um componente TRectangle sem ter que fazer o download dele. É possivel fazer isso em Delphi? |
Para FTP, use os componente TIdFtp e o TMemoryStream;
com TIdFtp você conecta ao host com user e pass.
com a função IdFTP1.Get() voce pega a imagem do servidor ftp e joga na memoria usando o TMemoryStream
veja o exemplo abaixo.
| Código: |
procedure TForm2.Button1Click(Sender: TObject);
var
mstm: TMemoryStream; // este cara vai ser bem útil
begin
IdFTP1.Host := 'UserName Aqui'; // usuario
IdFTP1.Password := 'PassWord Aqui'; // senha
IdFTP1.Port := 21; // padrão ftp 21 mais não nescessariamente será sempre 21.
IdFTP1.Connect; // conecto a servidor
mstm := TMemoryStream.Create; // instancia
IdFTP1.Get('/files/image.png', mstm, true); // pegando a imagem e jogando no TMemoryStream
mstm.Position := 0; // seto a posição igual a zero
Image1.Picture.Graphic.LoadFromStream(mstm); // jogando a imagem de TMemoryStream para o timage
IdFTP1.Disconnect; // desconectando
mstm.Free; liberando a instancia
end; |
neste caso você ainda baixa a imagem, contudo em vez para o disco, ou sdcard baixa diretamente para memoria onde por sua vez quando a aplicação for fechada sumira sem deixar qualquer rastro. |
Obrigado Strak pelo dica, valeu. |
|
| Voltar ao Topo |
|
 |
|