ورود

View Full Version : نمایش عکس



sitara24
یک شنبه 17 اردیبهشت 1391, 22:49 عصر
بچه ها
من تو سایت خیلی سرچ کردم ولی اونی که میخواستم رو پیدا نکردم
چند تاشو امتحان کردم ولی جواب نداد.کد منو ببینید و اگه لطف کنید راهنماییم کنین ممنون میشه.

string TypeImage = "nul";
byte[] Content = new byte[0];
bool FileOK = false;
if (Validation())
{
string strConn;

NameValueCollection nv = new NameValueCollection();
nv = ConfigurationManager.AppSettings;
strConn = nv.Get("connectionstring");

SqlConnection connection = new SqlConnection();
connection.ConnectionString = strConn;
SqlCommand cmd = new SqlCommand();
try
{
if (ImageUpload.HasFile)
{
if (ImageUpload.PostedFile.ContentType == "image/gif" || ImageUpload.PostedFile.ContentType == "image/jpeg" || ImageUpload.PostedFile.ContentType == "image/pjpeg" || ImageUpload.PostedFile.ContentType == "image/jpg" || ImageUpload.PostedFile.ContentType == "image/png" || ImageUpload.PostedFile.ContentType == "image/x-png")
{

if (ImageUpload.FileBytes.Length < 200000)
{
TypeImage = ImageUpload.PostedFile.ContentType;
Content = ImageUpload.FileBytes;
FileOK = true;
}
else

LblErrHajm.Visible = true;

}
else

LblErrType.Visible = true;

}
if (FileOK)
{
cmd.Connection = connection;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SPF_insertImage";
cmd.Parameters.Add("@Title", SqlDbType.NVarChar);
cmd.Parameters.Add("@FileImage", SqlDbType.Image);
cmd.Parameters.Add("@FileContent", SqlDbType.NVarChar);

cmd.Parameters["@Title"].Value = TxBTitle.Text;
cmd.Parameters["@FileImage"].Value = Content;
cmd.Parameters["@FileContent"].Value = TypeImage;

connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
clear();
LblOk.Visible = true;
GrdImage.DataBind();
}
}

catch
{
clear();
Lblerror.Visible = true;
connection.Close();

}

از اینجا میفرستم تو بانک
حالا میخوام نشونش بدم
یا تو گرید یا دیتا لیست
با گرین این کا رو انجام دادم

<asp:GridView ID="GrdImage" runat="server" AllowPaging="True"
AutoGenerateColumns="False" CellPadding="4" DataSourceID="SqlDataSource1"
ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="Title" HeaderText="عنوان" />
<asp:ImageField DataImageUrlField="FileImage" HeaderText="تصویر">
</asp:ImageField>
</Columns>
<EditRowStyle BackColor="#7C6F57" />
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#E3EAEB" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F8FAFA" />
<SortedAscendingHeaderStyle BackColor="#246B61" />
<SortedDescendingCellStyle BackColor="#D4DFE1" />
<SortedDescendingHeaderStyle BackColor="#15524A" />
</asp:GridView>


ولی بازم نشون نمیده.از توی خود گرید به دیتا بیس باند کردم
لطفا راهنمایی کنید.

sitara24
دوشنبه 18 اردیبهشت 1391, 15:38 عصر
هیچ کی نبود کمک کنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

hashemi85sep
دوشنبه 18 اردیبهشت 1391, 16:08 عصر
سلام
دوست عزیز
توی Template گرید ویو 1 دونه Image بزار و Bind کن به فیلد عکس

sitara24
سه شنبه 19 اردیبهشت 1391, 17:59 عصر
اگه منظورتون اینه:<asp:ImageField DataImageUrlField="FileImage" HeaderText="تصویر"> </asp:ImageField>

اینو انجام دادم ولی بازم نشون نمیده

hamid_shrk
سه شنبه 19 اردیبهشت 1391, 20:14 عصر
دوست عزیز باید آدرس عکس رو هم بذارید قبلش، بعنوان مثال :


DataImageUrlField='<%# "~/Image/DBImages/Gallery/"+ Eval("FileImage") %>'

sitara24
چهارشنبه 20 اردیبهشت 1391, 19:33 عصر
دوست عزیز باید آدرس عکس رو هم بذارید قبلش، بعنوان مثال :


DataImageUrlField='<%# "~/Image/DBImages/Gallery/"+ Eval("FileImage") %>'

ببخشید ولی من داده ام رو از نوع image گرفتم.باینری ذخیره شده

hamid_shrk
چهارشنبه 20 اردیبهشت 1391, 19:37 عصر
اگه Image باشه باید کار کنه ماله خودتون (من تاحالا این کار رو نکردم).
دوست عزیز اگه که میتونید این کار رو نکنید ، یعنی Image رو نریزید تو دیتا بیس ، بلکه اسمش رو ذخیره کنید چون این کاری که دارید میکنید هم سرعت رو میاره پایین هم مدیریت سایتتون سخت میشه.
البته اگه این تغییر امکان پذیره این کار رو بکنید.

sitara24
چهارشنبه 20 اردیبهشت 1391, 20:05 عصر
اگه Image باشه باید کار کنه ماله خودتون (من تاحالا این کار رو نکردم).
دوست عزیز اگه که میتونید این کار رو نکنید ، یعنی Image رو نریزید تو دیتا بیس ، بلکه اسمش رو ذخیره کنید چون این کاری که دارید میکنید هم سرعت رو میاره پایین هم مدیریت سایتتون سخت میشه.
البته اگه این تغییر امکان پذیره این کار رو بکنید.
ممنون دوست عزیز
الان دارم همین کارو میکنم چون هر کار کردم جواب نداد.
از روش پوشه توی پروژه استفاده میکنم.امیدوارم این دیگه جواب بده و معطلم نکنه

d_derakhshani
چهارشنبه 20 اردیبهشت 1391, 21:14 عصر
با استفاده از فیلد تصویر در دیتابیس هم شدنی هست. اما هم سخت تره هم اینکه یکم بار اضافی به سیستم(از لحاظ فشار به پردازنده به دلیل رندرینگ) وارد می کنه(به جز عیب هایی که دوستان گفتن)
من روش کلی شو توضیح میدم. چون هم طولانیه هم فعلا برای کار شما مناسب نیست.
بهتره یک سرور کنترل بسازید(این طوری این کنترل حداقل بعدن کاربرد خواهد داشت) این کنترل از کنترل Image ارث خواهد برد. یک پروپرتی خواهیم داشت به نام ImageContent که آرایه ای از بایت دریافت خواهد کرد(به صورت viewState نگهداری خواهد شد).
یک httpHandler میسازید که آرایه بایت را از طریق queryString گرفته و داده ها رو با mime/type مخصوص در response.Output بنویسد.
در OnPrerender خصوصیت ImageUrl به httpHandler اشاره خواهد کرد و ImageContent رو به آن ارسال خواهد نمود.(همانند آنچه که در کنترل های captcha انجام می دهید)

با این توضیحات یک کنترل BinaryImage خواهید داشت. می توانید این کنترل رو در گرید انداخته و خصوصیت ImageContent اون رو به فیلد نوع داده باینری مربوطه بایند کنید

sitara24
چهارشنبه 20 اردیبهشت 1391, 21:43 عصر
با استفاده از فیلد تصویر در دیتابیس هم شدنی هست. اما هم سخت تره هم اینکه یکم بار اضافی به سیستم(از لحاظ فشار به پردازنده به دلیل رندرینگ) وارد می کنه(به جز عیب هایی که دوستان گفتن)
من روش کلی شو توضیح میدم. چون هم طولانیه هم فعلا برای کار شما مناسب نیست.
بهتره یک سرور کنترل بسازید(این طوری این کنترل حداقل بعدن کاربرد خواهد داشت) این کنترل از کنترل Image ارث خواهد برد. یک پروپرتی خواهیم داشت به نام ImageContent که آرایه ای از بایت دریافت خواهد کرد(به صورت viewState نگهداری خواهد شد).
یک httpHandler میسازید که آرایه بایت را از طریق queryString گرفته و داده ها رو با mime/type مخصوص در response.Output بنویسد.
در OnPrerender خصوصیت ImageUrl به httpHandler اشاره خواهد کرد و ImageContent رو به آن ارسال خواهد نمود.(همانند آنچه که در کنترل های captcha انجام می دهید)

با این توضیحات یک کنترل BinaryImage خواهید داشت. می توانید این کنترل رو در گرید انداخته و خصوصیت ImageContent اون رو به فیلد نوع داده باینری مربوطه بایند کنید
ممنون دوست عزیز حتما امتحانش میکنم