ASP .NET: zdjecie z bazy danych

0

Witam

Wrzucam do bazy danych SQL Server jakies zdjecie- pod rekord o typie nvarchar, potem tez robilem o typie image. Potem sciagam z bazy danych to zdjecie i dostaje tablice bajtow- probowalem to jakos konwertowac, ale w ogole nie dostaje zdjecia.

Jaki typ ustawic, jak wrzucic zdjecie do bazy danych, a nastepnie gdy je sciagne dostac ZDJECIE w formacie .jpg. Bede bardzo wdzieczny za pomoc.
Probowalem juz naprawde wielu rzeczy i nic.

0

Musisz zrobić własnego handler, który odczyta zawartość

http://20fingers2brains.blogspot.com/2013/02/imagehandlerashx-csharp-code-to-convert.html


public class ImageHandler : IHttpHandler {

public void ProcessRequest (HttpContext context) {

if (context.Request.QueryString["id"] != null)
{
DataClassesPlikiDataContext db = new DataClassesPlikiDataContext();
var pplik = from p in db.PlikiLinqs where p.ID == Convert.ToInt32(context.Request.QueryString["id"])
select new { p.Nazwa ,p.Miniatura, p.PlikZawartosc };
if (pplik.Count() > 0)
{
byte[] imageData = pplik.First().PlikZawartosc.ToArray();
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(imageData);
}
}

0

Ten kod co dales:

 
using System;
using System.Web;
using System.IO;
using System.Data;
 
public class ImageHandler : IHttpHandler {
     
    public void ProcessRequest (HttpContext context) {
 
 
        if (context.Request.QueryString["RegisterId"] != null)
        {
            string RegisterId = context.Request.QueryString["RegisterId"];
            DataTable dt = new DataTable();
            string query = "select ProfilePic from Register where RegisterId='" + RegisterId + "'";
            dt = Database.GetData(query);
 
            context.Response.BinaryWrite((Byte[])dt.Rows[0]["ProfilePic"]);
            context.Response.End();
        }
         
    }
  
    public bool IsReusable {
        get {
            return false;
        }
    }
 
}

podkresla mi "Database". Co to za biblioteka do tego jest?
Poza tym jaka mam zmienna zrobic HttpContext?
ja robie standardowymi metodami:

 
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ManagerConnectionString"].ConnectionString);
            conn.Open();
            string insertQuery = "select Image from  Articles where ArticleId='14'";
            SqlCommand com = new SqlCommand(insertQuery, conn);

            

            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();

            bf.Serialize(ms, com.ExecuteScalar());
            byte[] obj = ms.ToArray();


moglbys napisac dokladnie jak nalezy sie odniesc do tej klasy Handlera? konkretny kod by sie przydal. Pozdrawiam

0
  1. Utwórz plik ImageHandler.ASHX
  2. Ja korzystam z Linq'a, ale Twoje rozwiązanie też jest prawidłowe. Ważne jest aby dostać się do danych reprezentujących dany rysunek
  3. Utwórz plik Image.aspx
  4. Dodaj w nim funkcję
    public static string DDRysunek(string tt)
    {
    return "ImageHandler.ashx?id=" + tt;
    }
  5. Wstaw kontrolkę ListView
  6. Ustaw w niej
    asp:ImageButton ID="ImageButton00" runat="server"
    ImageUrl='<%# DDRysunek(Eval("ID", "{0}")) %>'
    CommandArgument='<%# Eval("ID") %>'

1 użytkowników online, w tym zalogowanych: 0, gości: 1