Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gostaria de ver se alguém já passou por algo assim e que possa me dar uma luz do que fazer...
Antes que me digam pra fazer upload da imagem pro servidor e salvar apenas o nome no banco e exibir posteriormente, já digo desde agora que era assim mas preciso que as imagens fiquem no banco por requisitos de cliente.
Já havia feito um sistema usando handler. Funcionou perfeitamente. Só agora, usando outro sistema não quer funcionar!
Já tentei de tudo. Com handler; direto na página aspx; e outros. Tudo que achei na net tentei sem sucesso. Por isso estou começando a pensar que pode ser algum detalhe que eu tinha configurado na outra máquina na qual havia feito o sistema que funcionou.
Vou colocar abaixo as formas que tentei:
1ª: usando handler com vb
CODE
<%@ WebHandler Language="VB" Class="img" %>
Imports System
Imports System.Web
Public Class img : Implements IHttpHandler
Dim imagem As String
Dim tabela As String
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim dr As Data.SqlClient.SqlDataReader
imagem = context.Request.QueryString("i")
tabela = context.Request.QueryString("t")
Dim cmdFoto As New Data.SqlClient.SqlCommand("select " & imagem & " from " & tabela & " where cod=@codigo")
Dim cn As New Data.SqlClient.SqlConnection
cn.ConnectionString = ConfigurationManager.ConnectionStrings("nome_da_string").ConnectionString
cmdFoto.Parameters.Add("@codigo", Data.SqlDbType.Int)
cmdFoto.Parameters("@codigo").Value = context.Request.QueryString("id")
cmdFoto.Connection = cn
cn.Open()
dr = cmdFoto.ExecuteReader(Data.CommandBehavior.SequentialAccess)
context.Response.ContentType = "image/gif"
dr.Read()
context.Response.BinaryWrite(dr("logo"))
dr.Close()
cn.Close()
End Sub
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
Get
Return False
End Get
End Property
End Class
2ª: usando handler com c#
CODE
<%@ WebHandler Language="C#" Class="Imagens" %>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
public class Imagens : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
SqlCommand CMD;
SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["nome_da_string"].ConnectionString);
try
{
Conn.Open();
SqlDataReader DR;
string imagem = context.Request.QueryString["i"];
string tabela = context.Request.QueryString["t"];
context.Response.ContentType = "image/gif";
CMD = new SqlCommand("SELECT " + imagem + " FROM " + tabela + " WHERE cod = @cod", Conn);
CMD.CommandType = CommandType.Text;
CMD.Parameters.AddWithValue("@cod", context.Request.QueryString["id"]);
DR = CMD.ExecuteReader();
if (DR.Read())
context.Response.BinaryWrite((byte[])DR["image"]);
DR.Close();
DR.Dispose();
CMD.Dispose();
}
catch (Exception ex)
{
string msg = ex.Message.ToString();
}
finally
{
Conn.Close();
Conn.Dispose();
}
}
public bool IsReusable{ get{ return false; } }
public bool ThumbnailCallback(){ return true; }
}
3ª: usando aspx
CODE
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
public partial class ExibirImagem : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strCon = ConfigurationManager.ConnectionStrings["nome_da_string"].ConnectionString;
SqlConnection conexao = new SqlConnection(strCon);
conexao.Open();
SqlDataReader dr = null;
string sql = "Select logo from tabela where cod=@cod";
SqlCommand cmd = new SqlCommand(sql, conexao);
cmd.Parameters.AddWithValue("@cod", Request.QueryString["id"]);
try
{
byte[] logo = (byte[])dr["logo"];
dr = cmd.ExecuteReader();
if (dr.Read() && dr["logo"]!=null)
{
Response.ContentType = "image/gif";
Response.BinaryWrite(logo);
}
else
{
Response.Write("sem registro");
}
}
catch (Exception ex)
{
//Response.Write("except. " + ex.Message.ToString());
}
finally
{
conexao.Close();
if (dr != null)
dr.Close();
}
}
}
Tentei acessar imgeurl tanto em tempo real quanto no page_load:
imgLogo.ImgeUrl = "img.ashx?id=6&i=logo&t=emp";
ou
imgLogo.ImgeUrl = "ExibirImagem.aspx?id=6";
Nenhum deles retorna nada. A imagem nunca é "escrita" no html.
Alguém saberia o que pode ser?
Desde já agredeço.
Carregando comentários...