none
Melhor Maneira de se colocar imagem numa aplicação asp.net C#

    Question

  • Olá Amigos!!

    Tenho uma aplicação e-commerce em asp.net C# e BD em SQL Server 2005...

    no cadastro dos produtos da aplicação, o usuário faz o UPLOAD de uma imagem 
    e a imagem é inserida no BD ...

    Acontece que tava com problemas para carregar essas imagens do BD ...
    depois de inúmeras tentativas, desenvolvi uma maneira da minha aplicação carregar essas imagens...
    e tudo funciona perfeito... mas gostaria de saber se a minha solução é a melhor (em desempenho) ou é pura "gambiarra"
    vou explicar um pouco de como a imagem é carregada...

    eu tenho um formulário chamado "retorna_imagem_produto.aspx", 
    no LOAD desse formulário eu montei uma lógica que a aplicação carrega todas as imagens de produtos do BD no cache ...
    e quando eu preciso em algum lugar da minha aplicação da imagem de algum produto, eu faço seguinte...

    na URL dessa imagem eu ponho o nome do meu formulário ("retorna_imagem_produto.aspx") e passo o parâmetro "ID" com o ID do produto...

    Bom, agora gostaria de saber se é a melhor maneira de carregar imagens do BD é essa...

    se alguem quiser eu posto o código fonte pra voces darem uma olhada...

    Grande Abraço!


    Lipe Camargo
    • Moved by AndreAlvesLimaMVP Friday, December 18, 2009 2:25 AM Migrado de .Net Dvlp. Geral (De:.NET Development - Geral)
    Wednesday, December 16, 2009 11:02 AM

All replies

  • Brother,

    Esta forma que você está utilizando já é bem difundida e acredito não ter problemas, já que da mesma forma o browser poderá manter a imagem em cache.

    Eu só não gosto da idéia de armazenar imagens em banco. Prefiro armazenar apenas o nome do arquivo ou caminho em banco, já o conteúdo do arquivo fica em disco.

    http://blogs.julianonunes.com (Português) | http://weblogs.asp.net/julianonunes (English) http://twitter.com/julianonunes | http://www.linkedin.com/in/julianonunes | http://www.facebook.com/julianonunes
    Wednesday, December 16, 2009 11:10 AM
  • Fale,

    Vê se ajuda:
    http://www.devmedia.com.br/articles/viewcomp.asp?comp=14725

    Abraço!
    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
    Wednesday, December 16, 2009 11:34 AM
  • Opaa...

    então... usei essa lógica bem difundida de ir usando o cache...


    uhum já me falaram que essa forma de ir armazenando em disco é bem melhor... 
    um professor meu deu o exemplo de fazer dessa forma...

    mas como eu iria inserir a imagem do browser direto no disco?
    será que eu nao iria encher demais o disco? com todas as imagens??
    tenho algumas duvidas..

    Lipe Camargo
    Wednesday, December 16, 2009 11:42 AM
  • Olá amigo...

    já usei essa forma de usar um HttpHandler... 
    mas não de muito sucesso não...
    consegui um melhor desempenho com o jeito que citei acima..

    Obrigado!

    Lipe Camargo
    Wednesday, December 16, 2009 11:43 AM
  • Fale,

    Uma das melhores forma que já usei foi a do link que te mostrei, onde as imagens estão no banco e são mostradas na página web.
    Também já salvei as imagens em pasta e depois com o caminho que estava no banco mostrava na págiva web. ;)

    Abraço!
    Se a resposta solucionar sua dúvida, favor - Votar como Útil Abraço!
    Wednesday, December 16, 2009 12:04 PM
  • No SQL Server quando apagamos um registro ele vai para o arquivo de LOG, então se a imagem estiver armazenada em banco e o SQL Server utilizar o mesmo comportamento para colunas binárias, você vai ficar enchendo o transaction log.

    Pra salvar a imagem em disco após o upload, basta usar o método SaveAs (se eu não me engano) do controle FileUpload.



    http://blogs.julianonunes.com (Português) | http://weblogs.asp.net/julianonunes (English) http://twitter.com/julianonunes | http://www.linkedin.com/in/julianonunes | http://www.facebook.com/julianonunes
    Wednesday, December 16, 2009 12:35 PM
  • Lipe,

    Estou migrando seu post para o fórum de Deselvolvimento Web - Geral.

    Se surgirem outras dúvidas relacionadas a desenvolvimento web, por favor, poste-a em algum dos fóruns na seção de Desenvolvimento Web.


    André Alves de Lima - http://andrealveslima.spaces.live.com
    Friday, December 18, 2009 2:25 AM
  • Boa Noite...eu trabalho com desenvolvimento de Ecommerce...
    A maneira que agente fez foi colocar apenas os endereços no banco de dados
    sendo que as imagens ficam em disco e também geramos de cada imagem um
    thumb de tamanho específico (Ex imagens de 120x120 pixels) para que não seja 
    necessário carregar imagens muito grandes (as vezes imagens de 10mb de tamanho)
    nem armazenar imagens desse tamanho em banco de dados....e sim somente os
    endereços...

    Jones Roberto Analista C#.NET
    Sunday, December 27, 2009 1:31 AM
  • Olá pessoal será que o Jones poderia me dar um exemplo dessa maneira que ele sugeriu!
    Estou começando a programar e estou tentando fazer um cadastro de clientes onde armazeno a foto numa pasta.
    Até já consegui gravar o caminho no banco mas to com muitas dúvidas de como fazer para buscar essa foto no momento que o cliente logar no sistema ou na hora que o administrador fizer uma pesquisa?
    Aguardo uma ajuda de vcs!
    Ricardo Magreza
    Thursday, February 18, 2010 7:23 PM