Cách Lấy Picture Từ Database Trong Webform ? (ASP.NET) [Archive]

Diễn Đàn Tin Học > Lập trình > Các ngôn ngữ lập trình > .NET > Cách lấy picture từ database trong Webform ? (ASP.NET) PDA

View Full Version : Cách lấy picture từ database trong Webform ? (ASP.NET)

handoidenbac07-05-2005, 09:33Trong winform, lưu picture trong CSDL, rồi gọi ra theo dạng binary thì ok, nhưng trong webform, không có control nào hỗ trợ việc này hết (hay là mình chưa tìm ra ??!) Các bạn có thể cho một vài ý kiến ? Cảm ơn trước ! coolface09-05-2005, 10:48Đối với Web form thì bạn muốn đưa ảnh lên thì bạn hãy coi ảnh đó như 1 trang web thôi và định dạng nó ở dạng multi part. dùng binary.write nó ra thôi. handoidenbac09-05-2005, 13:51Bạn có thể nói rõ hơn được không vậy ? hìhì :D binhit09-05-2005, 13:59cái bạn coolface nói như vậy ai mà hiểu cho nổi! Cận09-05-2005, 15:14Ý bạn ấy nói vậy nè: bạn nhập ảnh vào database dưới dạng binary, thì lấy ra cũng dưới dạng binary thôi Tạo 1 file getimage.aspx, code là: - Đầu tiên xem xem file ảnh đó kiểu gì rồi chỉnh Response.ContentType cho chính xác (ví dụ: Response.ContentType = "image/jpeg"; ) - Lấy binary data trong db ra, rồi Response.write cái bạn lấy được ra màn hình hông bít phải hông, các cao thủ cho ý kiến :) handoidenbac10-05-2005, 08:52Ý mình muốn lấy hình ra bỏ trong control Image của Webform, nhưng dùng control Image thì lại không có hàm lấy ra, chỉ có lấy theo URL. Còn nếu Response.Write thì hình sẽ hiện ra không đúng vị trí mà mình mong muốn ! Các bạn nghĩ sao ? Cận10-05-2005, 12:09bạn vẫn dùng Image control của WebForm, nhưng bạn phải tạo thêm 1 file render_image.aspx để lấy hình từ database và đưa ra trình duyệt. sau đó bạn set property ImageUrl của Image control thành: render_image.aspx?id=zzz Response.Write là write trong file render_image.aspx áh bạn. Tạm thời là vậy, để mình xem lại rồi hướng dẫn chi tiết, tại cái này đọc lâu rồi mà chưa đụng đến bao giờ thân :) coolface10-05-2005, 13:31Oi. Tốt nhất là bạn dừng dùng Image control của WebFormmà hãỹ dùng đối tượng Image của html. đại khái là : <image url="***xx.aspx?id="> Bởi vì nếu bạn dùng Image control thì phải có tên cho nó. đôi khi bạn dùng nhiều ảnh theo kiểu binari thì không định đực tên đâu. handoidenbac10-05-2005, 14:27Cảm ơn các bạn nhiếu lắm, còn bạn nào có cao kiến xin chỉ giáo mình tiếp nghen ! anh em ddth thật là tuyệt ! Hỏi bạn Cận : bạn ơi, file render_image.aspx thực chất là tạo ra 1 trang aspx phải không ? ý bạn Cận là dùng trang này để gọi Image theo dạng Response.Write rồi từ trang khác, mình gọi ra trang render_image.aspx (đã có hình được gọi ra), đúng không !? handoidenbac11-05-2005, 08:11Các bạn có ý kiến nào khác không ? nhanh hay hiệu quả và dễ control hơn chẳng hạn... mykenty11-05-2005, 10:30các của Cận là đúng rồi đó nhưng nếu cứ mỗi field hình thì để 1 page thì ko linh hoạt lắm nên bạn tự viết thành 1 page dùng chung rồi truyền id vào và móc hình ra. Cận11-05-2005, 17:38Cảm ơn các bạn nhiếu lắm, còn bạn nào có cao kiến xin chỉ giáo mình tiếp nghen ! anh em ddth thật là tuyệt ! Hỏi bạn Cận : bạn ơi, file render_image.aspx thực chất là tạo ra 1 trang aspx phải không ? ý bạn Cận là dùng trang này để gọi Image theo dạng Response.Write rồi từ trang khác, mình gọi ra trang render_image.aspx (đã có hình được gọi ra), đúng không !? không, file render_image.aspx?id=*** này sẽ tạo ra image cho bạn luôn (chỉnh Response.ContentType = "image/jpeg" hoặc "image/gif" ) Còn code thì bạn chờ nha, để mình kiếm đã, anh em trên diễn đàn ai có thì post lên dùm luôn thân :) Cận11-05-2005, 18:58Rồi đây, tìm hoài hông ra, mình làm cho bạn 1 cái luôn: Database gồm có 1 table Pictures ( ID int primary auto indentity = Yes ContentType varchar 50 Data image ) Tạo project mới gồm 2 file - File AddToDB.aspx dùng để đưa hình vào DB: gồm có 1 HtmlInputFile và 1 button Code: protected System.Web.UI.HtmlControls.HtmlInputFile file; protected System.Web.UI.WebControls.Button Button1; private const string connectionString = "server=localhost; database=Pictures; uid=sa; pwd=;"; private void Button1_Click(object sender, System.EventArgs e) { string contentType = file.PostedFile.ContentType; System.IO.Stream stream = file.PostedFile.InputStream; byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, (int) stream.Length); using (SqlConnection cn = new SqlConnection(connectionString)) { cn.Open(); SqlCommand cm = new SqlCommand(); cm.Connection = cn; cm.CommandText = "INSERT INTO Pictures (ContentType, Data) VALUES (@ContentType, @Data)"; cm.CommandType = CommandType.Text; cm.Parameters.Add("@ContentType", SqlDbType.VarChar).Value = contentType; cm.Parameters.Add("@Data", SqlDbType.Image).Value = buffer; cm.ExecuteNonQuery(); cn.Close(); } } - File GetPic.aspx dùng để lấy picture từ database ra: private const string connectionString = "server=localhost; database=Pictures; uid=sa; pwd=;"; private void Page_Load(object sender, System.EventArgs e) { if (Page.IsPostBack) return ; int id = int.Parse(Request.QueryString["ID"]); using (SqlConnection cn = new SqlConnection(connectionString)) { cn.Open(); string sql = "SELECT ContentType, Data FROM Pictures WHERE ID = @ID"; SqlCommand cm = new SqlCommand(); cm.CommandType = CommandType.Text; cm.CommandText = sql; cm.Connection = cn; cm.Parameters.Add("@ID", SqlDbType.Int).Value = id; SqlDataReader dr = cm.ExecuteReader(); if (dr.Read()) { Response.ContentType = (string) dr["ContentType"]; byte[] b = (byte[]) dr["Data"]; Response.BinaryWrite(b); } cn.Close(); } } Xong rùi đó ^'.^ àh quên chút nữa, khi nào bạn cần lấy hình ID nào thì chỉ cần: <img src='GetPic.aspx?ID=123'> là được rồi :) hatred11-05-2005, 20:36Sorry vì mod vì tớ không tạo đượcthread mới trên này, mod có biết không? Mod có biết vì sao không...hic...tơ còn không edit được bài của mình nữa cơ nó cứ báo là forbidden handoidenbac12-05-2005, 09:14Cảm ơn bạn Cận lần nữa nha, quả là anh em ddth thật tuyệt ! Còn trường hợp của bạn hatred mình cũng bị như vậy đó, admin coi lại chức năng post new thread của diễn đàn xem sao ? deicide_vn12-05-2005, 19:49Chào các huynh đệ! Tui muốn thiết kế trang web gộp các phần(top,button,left,right...giống như thẻ frame trong html ) trong asp.net nhưng ko biết làm sao cả! nếu sử dụng control(trong design) thì dùng control gì?còn nếu viết mã trong phần HTML thì dùng các thẻ gì? Các huynh đệ giúp tui với! handoidenbac13-05-2005, 08:34Bạn sử dụng usercontrol đi ! Xin lỗi, mấy hôm nay sao DDTH bị sao đấy, post new thread mãi không được. Vậy mình phải post ở đây thôi. Subject : Cách Logout trong ASP.NET Content : Khi muốn logout từ một trang user đã đăng nhập, mình thường dùng session, nhưng khi đã thoát ra rồi, nhấn nút Back trên IE thì nó vẫn quay lại, như vậy thì không hay và ....dở quá ! Mình thấy trang Mail Yahoo, khi logout ra rồi, nhấn Back lại thì nó không quay trở lại được (Pro thật !). Vậy các anh em có ai biết cách logout kiểu này không, chỉ giáo mình với (mình đang dùng VB.NET để viết ASP.NET) Cảm ơn anh em trước ! hatred13-05-2005, 13:26Bạn dùng Forms Authentication của DotNet hổ trợ, không nên viết làm gì... handoidenbac13-05-2005, 15:22nhưng dùng nó thì phải imports class nào ? cách xài cụ thể bạn hatred chỉ mình với nha, cảm ơn ! hatred13-05-2005, 16:02Hic....you vào trong MSDN search một phát là ra cả đống....rồi lên www.codeproject.com mà tìm nhé handoidenbac13-05-2005, 16:59Chào hatred, làm fiền you quá ! tất nhiên là khi post lên đây mình đã search hết rồi, nhưng trong cái ví dụ trên MSDN, đồi tượng Forms Authentication ở đâu ra ? nó sẽ bào lỗi ngay. Hatred có kinh nghiệm gì về vấn đề này không ? hatred13-05-2005, 17:51You search key "FormsAuthentication" nhé, còn nếu tự làm như you thì you phai kill cái thằng cache của trang Login đê: <HEAD> <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> </HEAD> Thếm đoạn HTML này vào phần cuối trang Login.aspx nhớ là nó vần nằm trong TAG <HTML> nhé HITALF14-05-2005, 11:49tuyệt thật, anh em DDTH của ta giỏi quá...cố gắng phát huy nhé handoidenbac16-05-2005, 13:54CHÁN QUÁ, LẠI POST BÀI KHÔNG ĐƯỢC RÙI ! ĐÀNH POST Ở ĐÂY VẬY ! SUBJECT : CÁCH TÍNH TỔNG THEO SỐ LƯỢNG TƯƠNG ỨNG TRONG SQL SERVER CONTENT : Chào anh em ddth, mình căn bản đã tìm ra được thuật toán cho vấn đề này, nhưng vẫn xin ý kiến cùa anh em để xem cách nào pro hơn. Đơn giản thôi, mình có GIÁ TIỀN, tương ứng là SỐ LƯỢNG (ví dụ như laptopSony, GIÁTIỀN là 2.000 USD, SỐ LỰỢNG là 10 cái), mình muốn tính tổng MA_SP TEN GIATIEN SOLUONG 001 sony 2.000 10 002 IBM 1.200 7 -------------------------------------------- Tổng số tiền : ??? Lưu ý các bạn là mình đang muốn hỏi cách tính tổng như thế này trong SQL Server ! Các anh em ai có cao kiến xin bày tỏ nghen ! cảm ơn nhiều Chào anh em ddth, mình căn bản đã tìm ra được thuật toán cho vấn đề này, nhưng vẫn xin ý kiến cùa anh em để xem cách nào pro hơn. Đơn giản thôi, mình có GIÁ TIỀN, tương ứng là SỐ LƯỢNG (ví dụ như laptopSony, GIÁTIỀN là 2.000 USD, SỐ LỰỢNG là 10 cái), mình muốn tính tổng MA_SP TEN GIATIEN SOLUONG 001 sony 2.000 10 002 IBM 1.200 7 -------------------------------------------- Tổng số tiền : ??? Lưu ý các bạn là mình đang muốn hỏi cách tính tổng như thế này trong SQL Server ! Các anh em ai có cao kiến xin bày tỏ nghen ! cảm ơn nhiều ITVnese17-05-2005, 17:41Mình thắc mắc là không hiểu tại sao các bạn lại lưu ảnh vào trong CSDL làm gì, rất khó control vì nó chỉ hỗ trợ dưới dạng Binary, cho nên mỗi lần insert vào nó phải convert, lại không chỉnh sửa được. Theo mình nghĩ nếu làm Webform thì chỉ cần lưu địa chỉ của ảnh đó sau đó lấy ra rồi thích làm gì thì làm. bienca10117-05-2005, 18:31Nhất trí với ITVnese. Mình thấy nhúng hình vào database chỉ tổ làm database giảm tính scalable thôi. Nếu xài database nhỏ thì nhúng hình cho dễ, nhưng nếu đã là database nhỏ thì xài hẳn XML hay serialize database cho tiện (khỏi SQL chi cho mệt, objects thế nào thì lưu thế ấy). Còn đã là database bự thì nên tách binaries ra khỏi database. mykenty18-05-2005, 09:26vậy nếu là winform thì theo mấy huynh có nên save ảnh vào trong db hơn webform ko, theo yêu cầu khách hàng mình phải lưu ảnh vào trong db nhưng ko biết ích lợi là gì nữa. Mình thấy winform copy paste ảnh còn dễ hơn webform upload nữa mà phải lưu vào trong db chi cho khỗ. hainv23-11-2011, 09:40Cái này đơn giản mà các bác trinhdiep24-11-2011, 01:04có hai cách 1 là bạn chuyển binaryImage sang dạng base64.(src=base64:img/png;...) webbrowser sẽ hiểu nó là dữ liệu ảnh và convert sang dạng ảnh cách này chỉ dùng cho ảnh nhỏ vì nó làm chậm quá trình load text của trang. 2 là tạo trang xử lý ảnh (trang render_image.aspx như các bạn nói nhưng thường thì sử dụng trang có đuôi .ashx vì trang ashx xử lý nhanh hơn aspx.) để trả về dữ liệu dạng ảnh (có head ContentType=Image/*) webbrowser sẽ hiểu nó như là một ảnh Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.

Từ khóa » Chèn ảnh Vào Webform