Fórum Buscar imagem no BD #374916
14/09/2009
0
Estou usando esse caminho:
fot:=´C:\caminho\foto\´+edtMatricula.Text+´.bmp´;
Foto.Picture.LoadFromFile(fot);
Aguardo essa ajuda. Obrigado
Fdamds
Curtir tópico
+ 0Posts
16/09/2009
Builder
No windows, mapear a letra S para representar o C: do servidor e o código ficaria mais ou menos assim :
fot:=´C:\caminho\foto\´+edtMatricula.Text+´.bmp´;
if not fileexists(fot) then
fot:=´S:\caminho\foto\´+edtMatricula.Text+´.bmp´;
Tenta buscar a foto no C: (local) e caso ela não exista busca no S: (servidor)
Porém, a solução ideal é gravar as fotos (com tamanho padronizado) no próprio banco de dados. No passado guardar imagens poderia inflar demais o BD, mas hoje com a configuração das máquinas isto ficou trivial (aguentam o tranco com folga).
O fato de ter que compartilhar o diretório de fotos (ou qualquer outro) do servidor fica uma brecha para problemas de segurança (arquivos deletados, renomeados, sobrescritos, etc.) além de causar problemas se quiser fazer acesso via web ou imprimir fotos em relatórios.
Gostei + 0
16/09/2009
Fdamds
Sou iniciante em programação.
Como ficaria o código no caso das fotos estarem no banco de dados interbase?
Gostei + 0
16/09/2009
Builder
http://forum.devmedia.com.br/viewtopic.php?t=65822&start=0&postdays=0&postorder=asc&highlight=
Dependendo da versão do delphi, do firebird e do componente de acesso que estiver utilizando, pode ser a solução que precisa.
Gostei + 0
16/09/2009
Pestana_
Aproveitando o tópico gostaria de fazer uma pergunta. Houvi dizer que tem gente que mapeia a unidade do servidor em tempo de execução utiliza a foto depois desfaz o mapeamento deixando como estava antes. O que você diria sobre esta técnica? é seguro fazer isso?
essa é a razão porque eu não compartilho nada!
Obrigado!
Gostei + 0
16/09/2009
Builder
NET USE S: \\SERVIDOR\DIRETORIOCOMPARTILHADO /USER:CONVIDADO SENHA /YES
(A senha é opcional - se foi definida alguma para o convidado)
( O YES no final é para forçar o mapeamento - se tiver algum anterior, será sobrescrito).
Carregue a imagem e depois execute outro comando DOS:
NET USE S: /DELETE
Esta solução pode ser problemática em versões diferentes do Windows além de ter algum delay (tempo espera) maior para carregar a imagem.
Gostei + 0
16/09/2009
Pestana_
builder, obrigado responder!!!
Gostei + 0
16/09/2009
Builder
Funcionou muito bem no XP Professinal
No Windows XP Home Edition ...
No Windows Vista ...
No Windows Seven ...
No Windows 2003 ...
No Windows XXX 64 bits ...
Se mudar a sintaxe/comando no sistema operacional o código no Delphi irá falhar (ou o WinExec tem problemas no sistema XYZ). E as questões de segurança ainda pesam bastante, afinal, o usuário faz cada coisa que chega a dar um arrepio na espinha, além de que alguns vírus/worms infectam compartilhamentos, etc.
Se a solução fosse local (só no servidor), executar estes comandos externos teriam resultados muito mais previsíveis (ex.: executar programa externo para fazer backup utilizando o gbak do firebird).
Dependendo da urgência, pode-se valer daquela velha máxima: Vamos fazer com o que temos e depois procuramos a solução ideal.
Gostei + 0
16/09/2009
Pestana_
blz, entendi o que você quiz dizer, muito obrigado!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)