Ir para conteúdo
Fórum Script Brasil
  • 0

Listando imagens cadastradas no BD ASP.NET


Wagner666

Pergunta

Ola pessoal!!!

tenho o seguinte site: www.afterdarkcorsets.com (Desenvolvido em HTML CSS... Bem simples)

Estou migrando este para .NET, minha duvida é como listo as imagens cadastradas no banco de dados deixando no mesmo estilo do site citado acima...

primeiramente esta é minha duvida, tenho outras do tipo: paginação, segurançao das minha classes em C#, segurança da minha conecxão... dentro da pagina aspx... mas isso depois eu posto aqui!!!

Seria de grande ajuda a resposta desta duvida!!!

Obrigado pessoal!!!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Uma listagem de imagens você quer fazer. Olha, você vai ler cada registro do banco e pegar o campo que contêm a imagem (um vetor de byte). No caso, você vai precisar de um arquivo ASHX (ASP.net Handler, uma espécie de resposta ao cliente que requisita certo recurso) e, nesse arquivo terá uma classe que implementerá a interface IHttpHandler (http://msdn2.microsoft.com/en-us/library/system.web.ihttphandler.aspx) e implementerá o método ProcessRequest. Esse método voltará a imagem requisitada. A primeira linha do seu método seria:

Response.ContentType = "image/jpeg"; //indica que será devolvido uma imagem. Creio que você usará JPEG's, maspoderia ser outro tipo de arquivo
Depois, você conecta no banco e penas passa os dados para o buffer de saída:
Response.Clear(); //antes de escrever qualquer dado, limpe o buffer
Response.BinaryWrite(VETOR_DE_BYTES);

Bom, aí está um pequeno exemplo, qualquer dificuldade você posta aí, certo? É simples, o ASHX (você cria no próprio VS. É chamado de Http Handler) vai atuar como a interface entre sua tag IMG e o banco de dados (você pode especificar a imagem que quer através de um parâmetro QueryString).

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

primeiramente, obrigado Mais uma vez!

Eis aqui o código do Handler gerado pelo VS, olhei o link que me passaste e la eu tenho :

[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
public interface IHttpHandler
Como devo vincular estes dois fontes?
<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;

public class Handler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

e poderia tambem me passar mais uns ex. se não for pedir demais é claro...

Obrigado!!

Link para o comentário
Compartilhar em outros sites

  • 0

Um exemplo para você:

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Data.SqlClient;
using System.Web;

public class Handler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
        //Definindo o tipo de imagem a ser retornada (um exemplo, JPEG)
        context.Response.ContentType = "image/jpeg";
        
        //Abra conexão com o banco de dados (igual você faz bormalmente)
        //Faça um query na tabela onde está a imagem
        //SELECT imagem FROM Imagens WHERE ID = context.Request.QueryString["idimg"];
        
        /* idimg é um parâmetro de Url na qual está especificado o ID da imagem gravada no banco.
         * Faça validação nesse parâmetro (teste se é um número, por exemplo, caso seja
         *  IDs numéricos), antes de usa-ló.
         */
        
        //Obtendo os dados binários, faça (supondo que 'resultado' é uma variavel):
        //context.Response.BinaryWrite(resultado);
        
        //Exemplo de código
        using (SqlConnection conn = new SqlConnection("strconn"))
        {
            conn.Open();
            SqlCommand cmd =
                new SqlCommand("SELECT imagem FROM Imagens WHERE ID = " + context.Request.QueryString["idimg"].ToString(), conn);

            SqlDataReader reader = cmd.ExecuteReader();
            
            //Aqui estou supondo que foi retornado UM registro, já que ID é chave primária
            if (reader.Read())
            {
                context.Response.BinaryWrite((byte[])reader["imagem"]);
            }

            reader.Dispose();
            cmd.Dispose();
        }
    }

    //Indica que é reusável esse Handler
    public bool IsReusable {
        get {
            return true;
        }
    }

}
Em sua página, você pode usar:
Image1.ImageUrl = "Handler.ashx?idimg=29"; //um exemplo de uso
//observe que você indica a imagem pelo QueryString.

Bom, qualquer coisa estamos aí, ok? Precisando é só falar. O serviço deve retornar uma imagem de cada vez. Para listar todas, use um controle DataBind com a tabela de imagens, sendo que de template, será usado um asp;Image para exibir a imagem de acordo com o ID passado. Recomendo o componente Repeater ou o DataList (.net 3.5) para a listagem.

Até mais!

P.S: excelente! Gostei dessa maneira de responder, com exemplo! :) Bem melhor para escrever que a droga do editor de textos do blog WordPress xD Por isso que desisti do meu blog.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...