Как получить образ из MS SQL Server для привязки в Gridview ASP.NET с помощью LINQ to SQL? - PullRequest
1 голос
/ 17 июня 2009

У меня есть двоичный файл, который хранится в столбце customerPicture, для которого в таблице CUSTOMERs указан Image в качестве типа данных.

Я сохранил изображение, используя эту строку кода в LINQ to SQL.

Dim db = new MyCompanyDataContext
Dim newCus = new CUSTOMERs
Dim filebyte As Byte() = fileUploader.FileBytes
Dim fileBinary As New System.Data.Linq.Binary(filebyte)
newCus.customerPicture = fileBinary

Тогда теперь я хочу получить этот двоичный файл для привязки в сетке в ASP.NET, используя LINQ to SQL, но я не знаю как. Не могли бы вы показать мне несколько способов достижения решения?

Ответы [ 2 ]

2 голосов
/ 25 сентября 2009

вы можете использовать Httphandler для извлечения изображений из базы данных.

            <ItemTemplate>
                <asp:Image ID="imgPhoto" runat="server"/>
            </ItemTemplate>

Если у вас есть изображение в качестве шаблона элемента в таблице данных.

В событии ItemDataBound сетки данных вызовите «HttpHandler» для отображения изображения. В приведенном ниже коде я нахожу элемент управления изображением и назначаю imageUrl в качестве пути к файлу HttpHandler. Я также передаю идентификатор в виде строки запроса HttpHandlerFile.

</p> <pre><code> System.Web.UI.WebControls.Image photoImage = (System.Web.UI.WebControls.Image)e.Item.FindControl("imgPhoto"); photoImage.ImageUrl = "ImageHandler.ashx?PhotoID=" + id.ToString();

А в файле HttpHandler используйте Linq, чтобы получить изображение и отобразить его.

public void ProcessRequest (HttpContext context)<br/> {<br/> context.Response.ContentType = "image/jpeg";</p> <pre><code> int photoId = -1; //Check the query string. if (context.Request.QueryString["PhotoId"] != null && context.Request.QueryString["PhotoId"] != "") { photoId = Convert.ToInt32(context.Request.QueryString["PhotoID"]); } if (photoId != -1) { MovieDataContext db = new MovieDataContext(); //Get the movie record based on the ID MovieTable movie = db.MovieTables.First(m => m.ID == photoId); System.Data.Linq.Binary fileBinary = movie.Photo; byte[] fileByte = fileBinary.ToArray(); //displays the Image. context.Response.BinaryWrite(fileByte); } }

Поскольку этот файл HttpHandler сопоставлен с imageURL в сетке данных, вы можете видеть изображения, отображаемые в сетке данных.

0 голосов
/ 17 июня 2009

Попробуйте это:

dim ms as new MemoryStream
ms.Write(fileBinary.ToArray(),0,fileBinary.Length)

dim img as Image
img = Image.FromStream(ms)

newCus.customerPicture = img 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...