Exibir imagem do database no asp.net com c #

Eu sei que esse tipo de pergunta foi feita muitas vezes. Ainda não consigo exibir uma imagem do meu database em uma página.

Eu tentei o seguinte método.

protected void Page_Load(object sender, EventArgs e) { //Get the picture id by url //Query here byte[] picture = queryoutput; Response.ContentType = "image/jpeg"; Response.BinaryWrite(picture); } 

Link para obter a imagem.

  

A tag está localizada entre as tags .

Quando executo esse código e verifico no firebug, ele simplesmente afirma “Falha ao carregar URL fiven”. Eu também tentei colocar o Respone.Con...(picture); parte em um método público e chame esse método com o byte var dado.

Eu sou muito novo no asp.net, mas tenho um pouco mais de experiência em c #. Eu começo a realmente não gostar de asp.net … Eu tenho lutado com isso por cerca de 20 horas e já tentei muitas opções, mas nenhuma funcionou.

O melhor seria se eu pudesse apenas preencher a imagem através do codefile da mesma página. Parece-me bastante ilógico chamar outra página para carregar a imagem.

Alguém pode me dizer o que estou fazendo errado aqui?

Solução: Referência da página mestra removida da diretiva de página na página que manipula a resposta da imagem. Também foi removido todo o resto, exceto a diretiva @page no próprio arquivo aspx.

tente usar um arquivo manipulador (.ashx) coloque o código do seu page_load nessa mentira assim

 public void ProcessRequest (HttpContext context) { //Get the picture id by url //Query here byte[] picture = queryoutput; Response.ContentType = "images/jpeg"; Response.BinaryWrite(picture); } public bool IsReusable { get { return false; } } 

em seguida, chame o arquivo do manipulador e passe os itens de querystring corretos do

isso deve funcionar

Há um erro na sua referência de caminho …

 ImageUrl="/~givememypicture.aspx?pic=3" 

deveria estar:

 ImageUrl="~/givememypicture.aspx?pic=3" 

~ é a abreviação de “a raiz da aplicação” e precisa ser seguida por uma barra para indicar que é um diretório. Pense nisso como semelhante a outras notações de taquigrafia de caminho, como . e ..

Certifique-se de chamar Response.Flush (); e também Response.End (); e ver se isso faz o truque

Além disso, seu tipo de conteúdo tem um erro de ortografia. Não é “images / jpgeg” eu acho que é “image / jpeg”

EDIT: Sim, acabei de confirmar na Wikipedia que o tipo de conteúdo correto é image / jpeg.

Eu faço isso toda hora. Aqui está um código de amostra:

Response.ContentType = “imagem / jpeg”; Response.BinaryWrite (bytes);

Isso é tudo que existe também. Se não estiver funcionando, provavelmente há algo errado com seus dados.

Um flush não é necessário. Eu tenho código de trabalho para este aberto na minha canvas agora.

Sugiro que você tente gravar esse buffer de dados em um arquivo e veja se ele se abre como uma imagem válida. Aposto que algo está errado com esses dados.

Além disso, é uma boa ideia ativar o cache do navegador para o seu conteúdo dynamic. Aqui está um ótimo link que mostra exatamente como fazer isso, o que aumentará muito seu desempenho / escalabilidade.

http://edn.embarcadero.com/article/38123