PDA

View Full Version : مشکل در نمایش عکس ذخیره شده در دیتابیس در صفحه وب



gjmkdyttyhujk
پنج شنبه 18 دی 1393, 16:48 عصر
سلام عرض می کنم خدمت دوستان برنامه نویس بزرگوار.

من داشتم یه پروژه ای رو کار می کردم که تعدادی کاربر تو سایت ثبت نام می کنند و عکس خوشونو آپلود می کنند و این عکس ها تو پایگاه داده سایت ذخیره میشه. حالا مشکلی که دارم اینه که نمی تونم اون عکس رو در صفحه وب نشون بدم(توی کنترل Image). از webhandler استفاده می کنم و هیچ خطایی هم مشاهده نمیشه. ولی وقتی توی mozilla روی عکس view image می زنم یه صفحه باز میشه که میگه image contains errors. این هم کدهایی هست که استفاده می کنم.
توی Page_Load صفحه نمایش پروفایل کاربر از این کد استفاده می کنم

Image1.ImageUrl = "~/Handler.ashx?UserId=" + Session["UserId"].ToString();

و این هم کد web handler هست:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.IO;
using System.Data;
namespace shopingcenter
{
public class Handler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
Int32 empno;
if (context.Request.QueryString["UserId"] != null)
empno = Convert.ToInt32(context.Request.QueryString["UserId"]);
else
throw new ArgumentException("No parameter specified");

context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite((byte[])ShowEmpImage(empno));
}

public object ShowEmpImage(int empno)
{
SqlConnection connection = new SqlConnection("server=localhost;database=shoppingdb;trusted_conne ction=true");
string sql = "SELECT UserImage FROM User_tbl WHERE UserId = @ID";
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@ID", empno);
connection.Open();
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
object img=dr["UserImage"];

try
{
return img;
}
catch
{
return null;
}
finally
{
connection.Close();
}
}

public bool IsReusable
{
get
{
return false;
}
}

}
}

و مقدار Session["UserId"] هم هنگام ورود کاربر به سیستم با آیدی کاربر ست میشه.
و این هم صفحه ای که در هنگام کلیک راست روی عکس و کلیک روی گزینه view image نشون داده میشه.
http://8pic.ir/images/nqe31uaj101dwfzxn639.jpg

و هنگام ذخیره کردن هم
br0 رو توی ستونی از نوع image ذخیره می کنم. و این هم کدش
Stream str0 = FileUpload1.PostedFile.InputStream;
BinaryReader br0 = new BinaryReader(str0);
Byte[] bytes = br0.ReadBytes((Int32)str0.Length);
دوستان خیلی کارم گیره. لطف کنید کمکم کنید.